我的数据看起来像这样
{
"status": "success",
"data": {
"data1": {
"serialNumber": "abc123",
"version": "1.6"
},
"data2": {
"irrelvent": [
"irrelvent",
"irrelvent"
]
},
"data3": {
"irrelevantLibs": {
"irrelevantFiles": [
"irrelevant.jar",
"irrelevant.jar",
"irrelevant.jar"
]
}
},
"data4": {
"configuration": "auth"
}
}
}
我正在使用Jackson JSON处理器。我需要在data
对象下执行的操作是将每个data(x)
提取到自己的数据中。
很难解释,但我会尽力详细说明。我的目的是使JSON数据对我们的客户更具可读性。因此,我试图通过将每个data(x)
对象拆分为网站上的块/表来使JSON数据更加友好。因此data1
将独立显示。然后data2
将独立显示,依此类推。所以在这种情况下,我有四个data(x)
个对象,我想将这四个对象存储到四个不同的Strings
中,然后按照我想要的方式显示它们。我的问题是如何让杰出处理器执行此操作?
不确定这是否有用但我当前用于处理JSON数据的JSON函数是:
public static String stringify(Object o) {
try {
ObjectMapper mapper = new ObjectMapper();
DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
printer.indentArraysWith(new Lf2SpacesIndenter());
return mapper.writer(printer).writeValueAsString(o);
} catch (Exception e) {
return null;
}
}
我很肯定我可以操纵处理器来分离这些数据,但我不知道从哪里开始。
编辑:嗯,因为Jackson似乎是一个非常难以使用的解析器,如果我使用Javascript JSON解析器只提取data
个对象会更容易吗?既然我已经让Jackson将JSON数据转换为字符串,那么使用Javascript会起作用吗?
答案 0 :(得分:0)
看到你正在使用Java,你考虑过使用Sling吗? http://sling.apache.org/它是一个外部库,它允许您非常迅速地解析和探索JSON数据结构,而且最重要的是干净利落。
答案 1 :(得分:0)
所以我在真正深入研究文档后能够弄明白。我不得不使用JsonNode
来提取我想要的东西。请注意,变量appName
可供我轻松显示字符串data(x)
,而iteNode
只是data(x)
下的所有元素
public static List<String> jsonSplit(String o) throws JsonParseException, JsonMappingException, IOException {
List<String> list = new ArrayList<String>();
ObjectMapper mapper = new ObjectMapper();
DefaultPrettyPrinter printer = new DefaultPrettyPrinter();
printer.indentArraysWith(new Lf2SpacesIndenter());
JsonNode rootNode = mapper.readValue(o, JsonNode.class);
Iterator<String> appName = rootNode.get("data").getFieldNames();
Iterator<JsonNode> iteNode = rootNode.get("data").getElements();
while (iteNode.hasNext()){
list.add(appName.next());
list.add(mapper.writer(printer).writeValueAsString(iteNode.next()));
}
return list;
}