【发布时间】:2020-06-05 06:11:03
【问题描述】:
我想从多个字符串递归地创建一个 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));
}
}
此代码返回树的所有单个链接。问题是,我很难把它们放在一起。希望有人可以帮助我。有人知道我能做什么吗?
【问题讨论】:
标签: java json recursion jackson mapping