获取值为

时间:2017-02-20 15:51:59

标签: java json

我一直在努力获取JSONObject的关键和价值。我不知道为什么这不起作用,因为String键显然是一个字符串?

我的代码:

JSONObject obj = new JSONObject(historie2.getData());
            Iterator<?> keys = obj.keys();

            while(keys.hasNext()) {
                String key = (String)keys.next();
                String value =  obj.getString(key); //This is where the error comes

            }

JSONObject:

{
    "relatie_website": ["www.apple.com"],
    "relatie_kvknummer": ["NL3234234"],
    "relatie_naam": ["Apple international inc."],
    "relatie_d400code": [null],
    "relatie_zoeknaam": ["APPLE INC"],
    "relatie_debiteurnummer": ["3523523"],
    "relatie_btwnummer": ["332342"]
}

这是我遇到的错误:

  

org.json.JSONException:JSONObject [&#34; relatie_website&#34;]不是字符串。

1 个答案:

答案 0 :(得分:1)

你应该改变你的对象:

    {
    "relatie_website": "www.apple.com",
    "relatie_kvknummer": "NL3234234",
    "relatie_naam": "Apple international inc.",
    "relatie_d400code": null,
    "relatie_zoeknaam": "APPLE INC",
    "relatie_debiteurnummer": "3523523",
    "relatie_btwnummer": "332342"
}

因为问题是你的值是数组而不是字符串。

但是如果您需要将值保存在数组中,则可以更改代码以支持数组:

JSONObject obj = new JSONObject(historie2.getData());
            Iterator<?> keys = obj.keys();

            while(keys.hasNext()) {
                String key = (String)keys.next();
                JSONArray value =  obj.getJSONArray(key); 

            }

你会有一个JsonArray,你可以按照你想要的那样操纵:

for (int i = 0; i < value.length(); i++) {
    String val = value.getString(i).toString();
    logger.info("val : " + val);
}