在json中简单地从root中迭代JSONObject

Pix*_*ach 23 java json json-simple

我试图使用json simple迭代json对象.我已经看到了你可以从中做一个getJSONObject("child")的答案

{ "child": { "something": "value", "something2": "value" } }
Run Code Online (Sandbox Code Playgroud)

但如果我有什么东西呢?

{
"k1":"v1",
"k2":"v2",
"k3":"v3"
} 
Run Code Online (Sandbox Code Playgroud)

并希望迭代该json对象.这个:

Iterator iter = jObj.keys();
Run Code Online (Sandbox Code Playgroud)

throws:找不到符号符号:方法keys()location:class org.json.simple.JSONObject

man*_*uti 45

假设您的JSON对象保存在文件"simple.json"中,您可以按如下方式迭代属性 - 值对:

JSONParser parser = new JSONParser();

Object obj = parser.parse(new FileReader("simple.json"));

JSONObject jsonObject = (JSONObject) obj;

for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
    String key = (String) iterator.next();
    System.out.println(jsonObject.get(key));
}
Run Code Online (Sandbox Code Playgroud)

  • 我得到的错误无法解决`.keyset()` (2认同)

Rat*_*mar 6

你可以这样做

String jsonstring = "{ \"child\": { \"something\": \"value\", \"something2\": \"value\" } }";
JSONObject resobj = new JSONObject(jsonstring);
Iterator<?> keys = resobj.keys().iterator();
while(keys.hasNext() ) {
    String key = (String)keys.next();
    if ( resobj.get(key) instanceof JSONObject ) {
        JSONObject xx = new JSONObject(resobj.get(key).toString());
        Log.d("res1",xx.getString("something"));
        Log.d("res2",xx.getString("something2"));
    }
}
Run Code Online (Sandbox Code Playgroud)