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

Java 解析和映射具有动态属性的JSON对象,java,jackson,Java,Jackson,因此,通过对Stackoverflow的研究,我确定我在一个正常工作的getter/setter设置中嵌入了一个JSON对象字典。当我调用API时,传统的属性getter/setter工作得很好,但那是因为我知道属性的名称。对于名为errors的对象的未知属性,如何使其工作,以及该对象的(Map)格式是什么 API响应: { "success":false, "response_code":1, "status_message":"One or more errors h

因此,通过对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<>();
    ...
}

我的解决方案是分层的

首先,只是不做地图是可怕的,而是重温一旦我发现这是一个问题。因此,我不得不将默认序列化程序从Moxy更改为Jackson。通过更改
pom.xml
,可以轻松完成此操作:

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

org.glassfish.jersey.media
泽西媒体公司
${jersey.version}
其次,我的尝试有点错误,而不是:

private Map errors=new HashMap()

我真的需要:

私有HashMap


将构造函数与之保持一致总是会清除数据。相反,我只是初始化映射,然后在POJO上创建普通的getter/setter。

我的解决方案是分层的

首先,只是不做地图是可怕的,而是重温一旦我发现这是一个问题。因此,我不得不将默认序列化程序从Moxy更改为Jackson。通过更改
pom.xml
,可以轻松完成此操作:

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

org.glassfish.jersey.media
泽西媒体公司
${jersey.version}
其次,我的尝试有点错误,而不是:

private Map errors=new HashMap()

我真的需要:

私有HashMap


将构造函数与之保持一致总是会清除数据。相反,我只是初始化映射,然后在POJO上创建普通的getter/setter。

是一个json数组还是一个json对象?它看起来像一个字符串数组(但只有一个字符串),示例是它返回的确切格式。“一些错误消息”是json数组还是json对象?它看起来像一个字符串数组(但始终只有一个字符串),示例就是它返回的确切格式。