我刚刚开始使用Jackson JSON解析器,我很喜欢它,但是我遇到了一个我正在尝试解析的JSON对象的问题。
这是我目前的java代码:
public class resetPassword {
private String id;
private String key1;
private String key2;
public String getId() {
return id;
}
public void setId(String id) {
this.id= id;
}
public String getKey1() {
return key1;
}
public void setKey1(String key1) {
this.key1= key1;
}
public String getKey2() {
return key2;
}
public void setKey2(String key2) {
this.key2= key2;
}
}
我如何解析杰克逊这样的事情:
{
"1":{
"key1":"val",
"key2":"val"
},
"2":{
"key":"val",
"key":"val"
}, .. etc
}
任何有关这方面的帮助都会被大肆宣传
答案 0 :(得分:4)
根据评论中的信息,我猜你需要将遍历与数据绑定结合起来。
首先,使用traversal,使用JsonNode
获取{"key1": ..., "key2": ...}
个对象。
伪代码(未测试):
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(genreJson);
Iterator<String> fieldNames = root.fieldNames();
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
JsonNode node = root.get(fieldName);
// now you should have {"key1": ...} in node
}
然后对找到的每个节点使用data binding:
ResetPassword item = mapper.readValue(node, ResetPassword.class);
答案 1 :(得分:1)
如果您需要快速方式,可以将其设置为Map
;
ObjectMapper mapper = new ObjectMapper();
Map<String, Map<String, String>> map = mapper.readValue(br, Map.class);
System.out.println(map);
您的map
现在是:
{1={key1=val, key2=val}, 2={key1=val, key2=val}}
您可以迭代Map(s)
并相应地设置ResetPassword
。
PS: br 是我的BufferedReader
个实例,它会读取放置在json
中的numeric.txt
,
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("numeric.txt"), "UTF-8"));