【发布时间】:2013-12-21 23:01:56
【问题描述】:
我有一些代码可以将安静的响应转换为递归结构。但是,我想解析成树的内容被包装到“treeprop”属性中。有没有更方便的方式解析真实内容?
ObjectMapper mapper = new ObjectMapper();
JsonFactory jfac = new JsonFactory();
JsonParser jp = jfac.createParser(inputStream);
JsonNode rootNode = mapper.readTree(jp);
JsonNode path = rootNode.path("treeprop");
String realContent = mapper.writeValueAsString(path);
MyTree mt = mapper.readValue(realContent, MyTree.class);
inputStream.close();
请注意,解析本身不是这里的问题。上面的代码确实将 inputStream 正确地转换为树。但是,json 通常大于 1MB,因此将其临时存储在 String 中不能提高运行时效率。
{
"treeprop": {
"id": 0,
"children": [
{
"id": 2,
"children": [
{
"id": 3,
"children": []
},
{
"id": 4,
"children": []
}
]
},
{
"id": 1,
"children": []
}
]
}
}
这个类看起来大致是这样的
class MyTree {
public Integer id;
public List<MyTree> children;
}
所以真正的问题是:是否有更有效的替代方案来实现相同的效果:
JsonNode path = rootNode.path("treeprop");
String realContent = mapper.writeValueAsString(path);
MyTree mt = mapper.readValue(realContent, MyTree.class);
【问题讨论】:
-
更多信息在这里会有所帮助 - 首先,您尝试解析的 json 输入示例;第二 - MyTree 类。
-
看看这个答案,我相信它会满足您的需求。 -> stackoverflow.com/questions/20635220/…