Я хочу рекурсивно создать дерево 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));
}
}
Этот код возвращает все отдельные ссылки дерева. Проблема в том, что мне трудно собрать их вместе. Надеюсь, кто-нибудь сможет мне помочь. У кого-нибудь есть идеи, что я могу сделать?