我有一个包含路径值的数组,如下所示:
{"A/B1","A/B2","B2/C3","B2/C4"}
我想使用它创建一个 json 结构,它应该如下所示:
[
{
label : A,
child : [
{label : 'B1'},
{label : 'B2',
child : [
{label : 'C3'},{label : 'C4'}
]
}
]
}
]
我想做如下的事情:
package com.ds.test;
import java.util.Iterator;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test {
private static String pathArray[] = {"A/B1","A/B2","B2/C3","B2/C4"};
private static JSONArray resultJson = null;
private static void buildJson(String pathStr) throws JSONException{
String elems[] = pathStr.split("/");
String parent = "";
for(int jj = 0; jj < elems.length; jj++){
checkAndAdd(elems[jj],parent);
parent = elems[jj];
}
}
private static void checkAndAdd(String elem,String parent) throws JSONException{
if(parent.isEmpty()){
JSONObject obj = new JSONObject();
obj.put("label",elem );
resultJson.put(obj);
}
else{
for(int jj = 0; jj < resultJson.length(); jj++){
//to do;
//if json element contains element with label = parent then add elem as child
//to it.
}
}
}
public static void main(String[] args) throws Exception {
resultJson = new JSONArray();
for(int ii=0; ii < pathArray.length; ii++){
buildJson(pathArray[ii]);
}
}
}
但是,我没有找到一种方法来检查元素是否已经存在,以便我可以向其添加子数组。我想递归地执行此操作,但没有找到方法。
有人可以建议我一种继续进行的方法吗?我并不是要求完整的代码帮助。我只需要一些逻辑来继续?有人可以帮我吗?
最佳答案
我会将其视为图形问题或树问题。您需要做的就是创建一个具有以下顶点的图或树
A B2 B2 C3 C4。
为其添加正确的边缘。所以现在你有这样的东西
A
/ \
B1 B2
/ \ / \
C1 C2 C3 C4
现在您只需进行 BFS 或 Level 顺序遍历即可。
关于java - 在 JAVA 中使用 Path 值创建 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908801/