1

ネストされた JSONObject を含む JSONObject があります。内部オブジェクトを引き出して、その値を取得する必要があります。私の主なオブジェクトは次のようになります。

{"result":"success",
 "message":
  {
    "id":"1",
    "first_name":"Tony",
    "last_name":"Soprano",
    "group":
    "{
        \"group_id\":\"1\",
        \"group_name\":\"bada bing\"
    }",
    "email":"tony.soprano@gmail.com"
  }
}

次のように、内部オブジェクトの「グループ」要素にアクセスしようとしています。

private void jsonToSharedPreferences(String jsonMessage) throws JSONException {
    System.err.println(jsonMessage); //<--output looks perfect
    JSONObject user = new JSONObject(jsonMessage);
    String strGroup = user.getJSONObject("group").toString().substring(3);
    JSONObject group =  new JSONObject(strCoach.substring(strGroup.indexOf("{"), strGroup.lastIndexOf("}") + 1));
    System.err.println(group.get("group_name").toString());
}

すべての部分文字列の理由は、文字列の先頭にある 3 文字を非表示にする UTF-8 エンコーディング (オブジェクトが作成された PHP からのもの) があることを示唆するこの問題に関する投稿を見つけたからです。部分文字列の有無にかかわらず、このコードを試しました。同じ結果が得られます。

残念ながら、何をしてもこのエラーが発生します。

org.json.JSONException: Value {"group_id":"1","group_name":"bada bing"} at group of type java.lang.String cannot be converted to JSONObject

オブジェクトが文字列として完全に出力できるのに、JSONObject に変換しようとすると失敗する理由を知っている人はいますか? 私は完全に途方に暮れています。ありがとう!

4

1 に答える 1