Java 在 json simple 中从 root 遍历 JSONObject

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24371957/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-14 11:50:08  来源:igfitidea点击:

Iterate through JSONObject from root in json simple

javajsonjson-simple

提问by PixMach

I am trying to iterate over a json object using json simple. I have seen answers where you can do a getJSONObject("child")from

我正在尝试使用 json simple 遍历 json 对象。我已经看到了你可以getJSONObject("child")从哪里做的答案

{ "child": { "something": "value", "something2": "value" } }

But what if I just have something

但如果我只是有一些东西

{
"k1":"v1",
"k2":"v2",
"k3":"v3"
} 

And want to iterate over that jsonobject. This:

并且想要迭代那个json对象。这个:

Iterator iter = jObj.keys();

Throws:

抛出:

cannot find symbol
symbol  : method keys()
location: class org.json.simple.JSONObject

采纳答案by M Anouti

Assuming your JSON object is saved in a file "simple.json", you can iterate over the attribute-value pairs as follows:

假设您的 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));
}

回答by Ratnesh Kumar

You can do like this

你可以这样做

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"));
    }
}

回答by Saurabh Verma

In Java 8 we can use lambdas

在 Java 8 中,我们可以使用 lambdas

void handleJSONObject(JSONObject jsonObject) {
jsonObject.keys().forEachRemaining(key -> {
    Object value = jsonObject.get(key);
    logger.info("Key: {0}\tValue: {1}", key, value);
  }
}