Java 解析和映射具有动态属性的JSON对象
因此,通过对Stackoverflow的研究,我确定我在一个正常工作的getter/setter设置中嵌入了一个JSON对象字典。当我调用API时,传统的属性getter/setter工作得很好,但那是因为我知道属性的名称。对于名为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
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对象?它看起来像一个字符串数组(但始终只有一个字符串),示例就是它返回的确切格式。