当前位置: 首页 > 知识库问答 >
问题:

解析和映射具有动态属性的JSON对象

齐思淼
2023-03-14

因此,通过对Stackoverflow的研究,特别是本主题,我已经确定在一个正常工作的getter/setter设置中嵌入了一个JSON对象字典。当我调用API时,属性的传统getter/setter工作得很好,但这是因为我知道属性的名称。如何使其适用于名为errors的对象的未知属性,以及该对象的格式是什么(map )?

API响应:

{
    "success":false,
    "response_code":1,
    "status_message":"One or more errors has occurred.",
    "errors":{
        "171":["Some error message."],
        "555":["Some other error message."]
    }
}

我的POJO:

public class APIResponse {
    private boolean success;
    private int response_code;
    private String status_message;
    private Map<String, List> errors = new HashMap<>();
    ...
}

如何设置getter/setter和正确的字典格式(看起来可能是map ),以便开始接收这个动态errors对象?

我正在使用invocation.builder将API响应解析为对象。

Response response= invocationBuilder.post(Entity.entity(APIRequest, MediaType.APPLICATION_JSON));
APIResponse formattedResponse = response.readEntity(APIResponse.class);

共有1个答案

左丘昕
2023-03-14

我的解决方案是分层的。

首先,Moxy不做地图的发现让人害怕,但当我发现这是个问题时,我又重温了一下。所以我不得不将默认序列化程序从Moxy更改为jackson。这可以通过更改pom.xml轻松完成:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>${jersey.version}</version>
</dependency>

第二,我的尝试有点错误,而不是:

私有Hashmap >;

将构造函数与它完全一致地抛出总是会清除数据。相反,我只是初始化映射,然后在POJO上创建正常的getter/setter。

 类似资料:
  • 对于使用Java Spring RestTemplate完成的HTTP请求,我得到一个JSON键值对对象的响应,该对象带有动态键,如下所示。 回应: 如何将响应对象映射到POJO或映射? 我使用RestTemplate如下所示。

  • 我使用flink动态分析json类型的数据,对keyby和给定的列求和,在我的mapFunction中,我将json转换为case类,但结果流没有在keyby函数中得到编译器,在线程“main”org.apache.flink.api.common.InvalidProgramException中得到错误。我的代码如下所示 我如何将json转换为case类或tuple?

  • 我需要在输入 JSON 下方转换以输出 JSON,但不确定如何为该输出编写规范。比较 JOLT 转换中的归档值 输入: 预期输出: 在标题部分需要有名称、描述和id。任何建议都将不胜感激。在标题部分需要有名称、描述和id。任何建议都将不胜感激。

  • 问题内容: 我如何解析这个json对象: 我可以有N个端口,每个端口的值始终是key:value对。 到目前为止,我已经尝试过了: 有了这个我得到键(0,1),但值是空的。 我也尝试过这个: 但也不行。 这就是我解码json对象的方式: 问题答案: 使用此类型: 游乐场的例子 笔记: 字段名称非常匹配。我使用字段名称“ Ports”来匹配JSON文本中使用的名称。 Go类型在JSON中应具有相同级

  • 我需要在输入 JSON 下方转换以输出 JSON,但不确定如何为该输出编写规范。比较 JOLT 转换中的归档值 以下是输入内容: 预期输出:我需要在输入JSON下方转换为输出JSON,并且不确定如何为该输出编写规范。在JOLT转换中比较文件值。

  • 我有一个json响应从API如下 我试图解析它并在列表视图中显示它。但是我在映射数据时遇到了如下错误,错误是“\u TypeError(type'String'不是type'map的子类型