java - 如何将responseEntity映射到java中的自定义类

Posted

技术标签:

【中文标题】java - 如何将responseEntity映射到java中的自定义类【英文标题】:How can I map responseEntity to custom class in java 【发布时间】:2022-01-21 13:09:40 【问题描述】:

我有一个服务返回一个类似这样的列表作为 responseEntity


    00080005=vr=CS, Value=[ISO_IR 100],
    00080054=vr=AE, Value=[DCM4CHEE], 
    00080056=vr=CS, Value=[ONLINE]

我怎样才能创建一个映射这个的自定义类,这种方式更好还是使用 responseEntity ?

--注意我在使用responseEnttiy的时候有个错误说

Can not deserialize instance of javax.json.Json out of START_ARRAY token

【问题讨论】:

您显示的代码看起来根本不像 JSON。属性将是"key": "value",您似乎使用= 并且不引用密钥。 是json+dicom,response把Content-Type设为json+dicom 我不知道那种格式,但是快速的 Google 搜索显示 this page 并且那里的示例看起来与您发布的完全不同。我的怀疑是您已经将它(可能通过某些框架自动解析)解析为一些域对象,而您在上面发布的是这些域对象的 toString() 输出。再说一遍:您发布的 不是 JSON 好的,其实我现在是手动解析的,不过我看看这个链接,谢谢 【参考方案1】:

您的服务以 JSON 格式返回?

我在开发一些项目时也遇到了类似的情况...但我不太确定您的服务返回是 json 格式..

我使用 Jackson 作为映射器,使用 Gson Library 作为 jsonobject。我使用杰克逊将每个请求映射到实体。

JsonObject gson         =   new Gson().fromJson(stringJson, JsonObject.class);

//--YA--Menggunakan ObjectMapper untuk convert string json ke entity
ObjectMapper mapper = new ObjectMapper();
Token token         = new Token();

//--YA-- setting jackson untuk bypass error jika terdapat body yg tidak bisa di map 
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
//--YA-- setting jackson untuk abaikan case sensitive
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); 

token   = mapper.readValue(gson.toString(), Token.class);

【讨论】:

以上是关于java - 如何将responseEntity映射到java中的自定义类的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot:测试包含 Java 时间的 ResponseEntity

如何将不同的数据集传递给同一作业的两个不同的映射器

ResponseEntity,如何获取html中的body

将RestTemplate响应映射到java Object

Spring + Angular:如何以角度解析 ResponseEntity?

如何在 ResponseEntity 中返回布尔值?