我想从多个字符串递归创建JSON树。字符串可能像这样:
.this.is:0.a.test
字符串解释如下:
.
是一个对象:
是一个数组:0.
是数组
相应的JSON看起来像这样
{
"this":{
"is":[
{
"a":{
"test":"testvalue"
}
}
]
}
}
我的代码如下所示:
public static JsonNode recursiveLimb(ArrayList<String> limb, Map<String, String> mappingBodyMap, BidiMap<String, String> bidiMap, JsonNode currentTree, String path) {
if (!limb.isEmpty() && limb.get(0).equals(".")) {
//object node
String firstElem = limb.remove(0);
String secondElem = limb.remove(0);
//call recursion to build rest of tree
JsonNode resultJN = recursiveLimb(limb, mappingBodyMap, bidiMap, currentTree, path + firstElem + secondElem);
return mapper.createObjectNode().set(secondElem, resultJN);
} else if (!limb.isEmpty() && limb.get(0).equals(":")) {
//array node
String firstElem = limb.remove(0);
String secondElem = limb.remove(0);
//call recursion to build rest of tree
JsonNode resultJN = recursiveLimb(limb, mappingBodyMap, bidiMap, currentTree, path + firstElem + secondElem);
return mapper.createArrayNode().add(resultJN);
} else {
//value node
String value = bidiMap.getKey(path);
return new TextNode(mappingBodyMap.get(value));
}
}
此代码返回树的所有单个链接。问题是,我很难把它们放在一起。希望有人可以帮助我。有人知道我能做什么吗?
最佳答案
我认为与其使用它,不如创建一个字符串并将其最后转换为JSON会更容易。例如:.life.is:0.so.good->我们从头开始阅读;
我们发现 。我们这样创建:{good = goodValue}
我们发现:0。是:[{so:{good = goodValue}}]]
我们发现 。生活:{is:[{so:{good = goodValue}}]}
我们找到了最后一个。我们添加了{life:{is:[{so:{good = goodValue}}]}}
我相信您的解决方案是好的,我只是想简化问题,所以仍然取决于您。