使用Java不能正确地迭代JSON对象

时间:2014-07-21 06:39:03

标签: java json

我正在尝试获取一个JSON对象并迭代它。在这种情况下,它应该只迭代一次,因为我只有一个完整的JSON对象,如果它有多个,它应该迭代多次。而是它显示system.out.println字符串两次。我不明白这段代码有什么不对吗?

String str = "{\"userId\":\"1234\",\"businessPrimaryInfo\":{\"53bd2a4\":{\"businessSpecificInfo\":{\"businessType\":\"Manufacturing\",\"tradingPlace\":\"Hyderabad\"}},\"53bd2a4e\":{\"businessSpecificInfo\":{\"businessType\":\"Milling\",\"tradingPlace\":\"Mumbai\"}}}}";
JSONObject jsonObj = new JSONObject(str);
Iterator<String> keys = jsonObj.keys();
// Iterate all the users.
while (keys.hasNext()) {
    String key = keys.next();
    try {
    // If the user has Business primary info as JSON object.
    if (jsonObj.has("businessPrimaryInfo")) {
        JSONObject jsonBizPrimaryInfo = jsonObj
            .getJSONObject("businessPrimaryInfo");
        System.out.println("Object is:" + jsonBizPrimaryInfo);

    }
    } finally {

    }

}

请看看,让我知道我在哪里做错了。

1 个答案:

答案 0 :(得分:2)

导致循环迭代两次的两个键是:userIdbusinessPrimaryInfo。但是你问主JSON对象是否有businessPrimaryInfo密钥。每次迭代都有它。

您需要做的是检查当前密钥是否为businessPrimaryInfo

或者,您可以询问主要对象是否有businessPrimaryInfo密钥,如果有,请询问该子对象。