我试图在Java中使用Jackson以
的格式解析一串Json数组"[{"key1":"value1"},{"key2":{"keyChild1":"valueChild1","keyChild2","valueChild2"}}]"
但是,数组字符串中的JSON对象可以是任意有效的JSON,这意味着我无法将它们映射到Parsing JSON in Java without knowing JSON format
中建议的任何预定义POJO目标是将此JSON数组字符串转换为可以表示数组中每个JSON的List<someObject>
,这个someObject
将允许我添加/删除任何键/值对在那个JSON。
我尝试过使用
final ObjectMapper objectMapper = new ObjectMapper();
List<JsonNode> jsonNodes = objectMapper.readValue(jsonArraytring, new TypeReference<List<JsonNode>>() {});
似乎列表是空的。我真的被困在这里了。
任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试
String json = "[{\"key1\":\"value1\"},{\"key2\":{\"keyChild1\":\"valueChild1\",\"keyChild2\":\"valueChild2\"}}]";
ArrayNode array = (ArrayNode) new ObjectMapper().readTree(json);
答案 1 :(得分:0)
您可以将JSON数组反序列化为地图列表:
ObjectMapper mapper = new ObjectMapper();
String json = "[{\"key1\":\"value1\"},{\"key2\":{\"keyChild1\":\"valueChild1\",\"keyChild2\":\"valueChild2\"}}]";
List<Object> list = mapper.readValue(json, List.class);
list.forEach(o -> {
System.out.println(o);
System.out.println(o.getClass());
});
哪个出道:
{key1=value1}
class java.util.LinkedHashMap
{key2={keyChild1=valueChild1, keyChild2=valueChild2}}
class java.util.LinkedHashMap
您可以通过拨打mapper.readValue(json, Object.class)
进一步推动这一点。但是,您需要知道如何使用反序列化的类型。
答案 2 :(得分:0)
您可以尝试以下操作:
JsonNode node = objectMapper.valueToTree(jsonArraytring);
for(JsonNode innerNode : node.elements()){
//here you have each inner object
}