处理以HashMap形式存储的Json,并将多个元素存储在值中

时间:2019-01-24 09:40:29

标签: java json hashmap jackson

我有一个包含多个对象的json文档。我已经设法将其作为地图打印出来,但是我希望能够访问值中的元素。

我可以打印地图,但希望能够在按键中打印特定元素

for (Map.Entry<String,Object> entry : myMap.entrySet()) {
        System.out.println("Key: "+entry.getKey() + " Value: "+entry.getValue());
    }

这将输出以下内容:

Key: header1 Value: {id=123456, contents=[cat,dog,hamster]}
Key: header2 Value: {id=234567, contents=[spoon,knife,fork]}

我希望能够循环遍历,并在每次迭代中将id分配给字符串,并将内容分配给列表

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是创建一个代表JSON的类。对于您来说,它将像这样:

public class Contents {
    private int id;
    private List<String> contents;

    //No arguments constructor, getters and setters for every field
    //You can make with @JsonCreator, too. Read Jackson documentation
};

然后,您只需使用Jackson的ObjectMapper将其作为对象读取即可:

ObjectMapper mapper = new ObjectMapper();
Contents result = mapper.readValue(entry.getValue(), Contents.class);

之后,您可以对对象执行任何操作。以后,您甚至可以将其写入文件/流等。

答案 1 :(得分:0)

我曾经认为可以正常工作的代码有几个问题,但是现在在同事的一点帮助下已经解决了。

value.getContents();

是我要找的东西!