有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中提取JSON键名

我想通过保留层次结构(父子关系)来提取JSON结构(仅keyNames结构);我还不想要JSON中的值。 我是Java新手,一直在努力使用Jackson实现这一点,但没有成功

任何关于这方面的指导都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    JSONParser parser = parser;
    Object obj = parser.parse(new FileReader(FileName.Json));
    JSONObject jobj = (JSONObject) obj;
    
    obj.keys()
    

    该方法将为您提供JSONObject中所有键的列表

  2. # 2 楼答案

    我使用JSONObject(http://www.json.org/javadoc/org/json/JSONObject.html)为您创建了一个静态内部类

    public static class KeyNode {
        private String name;
        private ArrayList<KeyNode> children;
    
        public KeyNode(String name) {
            this.name = name;
            this.children = new ArrayList<KeyNode>();
        }
    
        public void addChild(KeyNode child) {
            this.children.add(child);
        }
    
        public static void parseJsonToKeys(KeyNode node, JSONObject json) throws JSONException {
            Iterator<?> keys = json.keys();
            while (keys.hasNext()) {
                String name = (String) keys.next();
                KeyNode child = new KeyNode(name);
                node.addChild(child);
                if (json.optJSONObject(name) != null) {
                    parseJsonToKeys(child, json.getJSONObject(name));
                } else if (json.optJSONArray(name) != null) {
                    JSONArray array = json.getJSONArray(name);
                    for (int i = 0; i < array.length(); i++) {
                        try {
                            array.getJSONObject(i);
                            parseJsonToKeys(child, json.getJSONObject(name));
                        } catch (JSONException e) {
                            // this is ok
                        }
                    }
                }
            }
        }
    
        public static void exampleCodeUsage() {
            try {
                JSONObject json = new JSONObject("your json");
                KeyNode keyHierarchy = new KeyNode("root");
                parseJsonToKeys(keyHierarchy, json);
            } catch (JSONException e) {
                // your json is not formatted correctly
            }
        }
    }