2017-02-20 21 views
0

私はJSONObjectのキーと値を取得しようとしています。私はなぜこれが動作していないのかわかりません、なぜならStringキーは明らかに文字列なのですから?JSONキーの値を取得する

マイコード:

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 [ "relatie_website" ]文字列ではありません。

+1

'[" www.apple.com "]'は1要素配列であり、文字列ではありません。 – Thomas

+1

オブジェクトは配列であり、文字列ではありません。値から[]を削除する必要があります – unkgd

+0

ああ、頭がおかげでありがとう! * facepalm * – Yoshi

答えて

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

      } 

そして、あなたはあなたが望むようあなたがそのようSTHを行うことによって操作することができJsonArrayを持っています:

for (int i = 0; i < value.length(); i++) { 
    String val = value.getString(i).toString(); 
    logger.info("val : " + val); 
} 
関連する問題