2017-03-17 5 views
0

さて、私はここで苦労しています。私は(!私が最後に中括弧が欠落していた編集済み)(「結果」と呼ばれる)私のPHPサーバーから、次のJSONフォーマットされた文字列を取得しています:JavaのJSONオブジェクトからの値の抽出に問題があります

{「L1」:[{「ユーザー名」:」 「User2」、「Avatar」:「2」)、「UserName」:「User3」、「Avatar」:「3」}、「User1」、「Avatar」:「1」、 「UserName」:「User5」、「Avatar」:「5」}}}

私はL1オブジェクト(?)からアバター番号を持つArrayListを抽出しようとしています。値 [{ "ユーザー名": "ユーザー1"、 "アバター": "1"}、{ "ユーザー名": "ユーザー2"、 "アバター" が、私はエラー

org.json.JSONExceptionを得ます: "2"}、{ "ユーザー名": "ユーザ3"、 "アバター": "3"}] タイプのL1でorg.json.JSONArrayはJSONObject

ここ

に変換することができない私のコードは次のとおり

私が使用している場合は
try { 
       JSONObject jsonObject = new JSONObject(result); 
       JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("L1")); 
       ArrayList<Integer> arrList = new ArrayList<>(); 
       if (jsonArray != null) { 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject json = jsonArray.getJSONObject(i); 
         arrList.add(json.getInt("Avatar")); 
         AvatarList = arrList; 
        } 
       } 
       String query_result = "SUCCESS"; 
       if (query_result.equals("FAILURE")) { 

       } else { 
        setAvatars(AvatarList); 
       } 
      } catch (JSONException e) { 
       Log.e("log_tag", "Error converting result "+e.toString()); 
      } 

​​

同じエラーが発生します。 提案がありますか? ありがとうございます!

(編集:私は、オリジナルのポストでミスをしたJSON文字列に欠落している中括弧があったことをキャッチする人に感謝します。)

+1

あなたはjsonlint.comでこのJSONを閲覧した場合、あなたは適切 –

+1

はまたhttp://jsonpath.com/ –

+0

あなたのJSONが無効で遊んでフォーマットされていないことがわかります。バックエンドで適切にフォーマットしてください。json 'jsoneditoronline.org'を貼り付けてエラーを確認してください。 –

答えて

0

以下one.Its作業罰金をお試しください。私はjson-simple-1.1.1 jarを使用しています

  String r="{\"L1\":[{\"UserName\":\"User1\",\"Avatar\":\"1\"},{\"UserName\":\"User2\",\"Avatar\":\"2\"},{\"UserName\":\"User3\",\"Avatar\":\"3\"}],\"L2\":[{\"UserName\":\"User4\",\"Avatar\":\"4\"},{\"UserName\":\"User5\",\"Avatar\":\"5\"}]}"; 

     Object obj=JSONValue.parse(r); 
     JSONObject jsonObject = (JSONObject) obj; 

     JSONArray jsonArray = (JSONArray) jsonObject.get("L1"); 

     ArrayList<Integer> arrList = new ArrayList<>(); 
     if (jsonArray != null) { 
      for (int i = 0; i < jsonArray.size(); i++) { 
       JSONObject json = (JSONObject) jsonArray.get(i); 

       arrList.add((Integer.parseInt((String) json.get("Avatar")))); 
       AvatarList = arrList; 
      } 
     } 
     String query_result = "SUCCESS"; 
     if (query_result.equals("FAILURE")) { 

     } else { 
      setAvatars(AvatarList); 
     } 
0

誰かがこの問題を抱えたら、これは私のために働きました。私は本当になぜこれが働いて、私のオリジナルの方法はJSONObjectsとJSONArraysとの関係か、Stringsや[、{、}、そしておそらく[...]のようなものではないことを理解していません。

  try { 
       JSONObject jsonObject = new JSONObject(result); 
       JSONArray jsonArray = new JSONArray(jsonObject.getString("L1")); 
       ArrayList<Integer> arrList = new ArrayList<>(); 
       if (jsonArray != null) { 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject json = jsonArray.getJSONObject(i); 
         arrList.add(json.getInt("Avatar")); 
         AvatarList = arrList; 
        } 
       }