在Java中提取JSON键名 2 周,4 日 Questions & Answers 89 我想通过保留层次结构(父子关系)来提取JSON结构(仅keyNames结构);我还不想要JSON中的值。 我是Java新手,一直在努力使用Jackson实现这一点,但没有成功 任何关于这方面的指导都将不胜感激
# 1 楼答案 JSONParser parser = parser; Object obj = parser.parse(new FileReader(FileName.Json)); JSONObject jobj = (JSONObject) obj; obj.keys() 该方法将为您提供JSONObject中所有键的列表
# 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 } } }
# 1 楼答案
该方法将为您提供JSONObject中所有键的列表
# 2 楼答案
我使用JSONObject(http://www.json.org/javadoc/org/json/JSONObject.html)为您创建了一个静态内部类