2013-08-17 3 views
1

У меня есть JSONObject, который содержит вложенные JSONObjects. Мне нужно вытащить внутренние объекты и получить их ценности. Мой главный объект выглядит примерно так:Не удается преобразовать строку в JSONObject

{"result":"success", 
"message": 
    { 
    "id":"1", 
    "first_name":"Tony", 
    "last_name":"Soprano", 
    "group": 
    "{ 
     \"group_id\":\"1\", 
     \"group_name\":\"bada bing\" 
    }", 
    "email":"[email protected]" 
    } 
} 

Попытка доступа «группы» элементы, как это внутренний объект:

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

Причина все подстроки материала является то, что я нашел сообщения о это проблема, которая предполагает, что существует некоторая кодировка 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? У меня полная потеря. Благодаря!

+0

и почему PHP тега.? –

+0

Поскольку объект json был создан в php, и это может иметь последствия с кодировкой UTF-8. Я отредактировал вопрос, чтобы объяснить это. Спасибо что подметил это. Хороший звонок. – Alex

+1

@ usr55410 Недействительный JSON. –

ответ

0

Вам необходимо изменить JSONObject для синтаксического анализа, в настоящее время он не в правильном формате.

{"result":"success", 
"message": 
{ 
"id":"1", 
"first_name":"Tony", 
"last_name":"Soprano", 
"group": 
{ 
    "group_id":"1", 
    "group_name":"bada bing" 
}, 
"email":"[email protected]" 
} 
} 

Использование онлайн инструменты, такие как JSONPARSER

+0

Ваш JSON также недействителен - удалите запятую после «bada bing» – Squonk

+0

@Squonk спасибо, я отредактировал его. – strike

+0

Мне очень жаль. Эта запятая - опечатка. Я уменьшал размер фактического массива, чтобы сохранить лишние детали. Спасибо за предложение JSONPARSER. Моя строка оценивает JSON. Все еще очень смущен. – Alex