ネストされた 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 に変換しようとすると失敗する理由を知っている人はいますか? 私は完全に途方に暮れています。ありがとう!