java - 在 JAVA 中使用 Path 值创建 JSON 结构

标签 java json

我有一个包含路径值的数组,如下所示:

{"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/

相关文章:

Java String.valueOf 返回空字符串

java - 如果对象没有在范围内进一步使用,Java7 是否可以智能地收集对象,尽管范围尚未完全结束

java - 编译器翻译代码的形式化符号

java - 使用也处理撇号的正则表达式匹配单词

javascript - 将 request.body 解析为字符串然后创建 JSON

json - 使用 serde 生成漂亮的(缩进的)JSON

java - 通过java客户端查询主键 - Aerospike

java - 如何将另一个类的组合框的选定索引设置为 0

java - 递归比较两个json节点并在java中打印不同的值

C# 使用 newtonsoft 删除 json 子节点