2013-12-26 2 views
0

У меня возникли проблемы при разборе JSON, и я застрял в конкретной ситуации. Я пытаюсь получить все значения в соответствии с JSON arrat «деталью», но это дает мне ошибки тх говорит JSONObject не может быть преобразован в JSONArrayparse multi dimensiona json array android

{ 
"response": "true", 
"errors": "<span>Success</span>", 
"details": { 
    "sid": "15", 
    "pid": "1", 
    "user_email": "[email protected]", 

Вот что я уже сделал:

String json = mParser.makeHttpRequest(API_REGISTER, "POST", params); 
     Log.d("Registration Return: ", json); 

     try { 
      JSONObject jObj = new JSONObject(json); 
      if (jObj != null) { 
       mDetails = jObj.getJSONArray("details"); 

       if (mDetails != null) { 
        for (int i = 0; i < mDetails.length(); i++) { 
         JSONObject c = mDetails.getJSONObject(i); 

         mPid = c.getString("sid"); 
         mSid = c.getString("pid"); 
         mUserEmail = c.getString("user_email"); 

Но все же я получаю ту же ошибку. Я делаю это неправильно с моим кодом? Я также проверил мой JSON, используя JSONLINT, полагая, что это был недействительный JSON, но он говорит о действительном JSON. Помощь очень ценится.

+2

'details' является JSONObject вместо JSONArray поэтому используйте' jObj. getJSONObject («подробности»); 'для получения деталей JSONObject –

ответ

0
String json = mParser.makeHttpRequest(API_REGISTER, "POST", params); 
     Log.d("Registration Return: ", json); 

     try { 
      JSONObject jObj = new JSONObject(json); 
      if (jObj != null) { 
       mDetails = jObj.getJSONObject"details"); 

       if (mDetails != null) { 
         String sid= mDetails.getString("sid"); 
         String pid = mDetails.getString("pid"); 
         String mUserEmail = mDetails.getString("user_email"); 
+0

Как было предложено gaurav5430, я попробовал это, прежде чем задавать вопрос, но почему-то у меня такая же проблема, но на этот раз в обратном направлении! Он говорит, что объект JSON не может быть преобразован в JSON Array! Так что я сделал это, чтобы удалить приложение на своем телефоне и очистить свой проект, а затем повторить попытку и какую удачу это сработало! Спасибо, ребята, за то, что помогли мне в этом. Спасибо gaurav5430 и Ajay Thakur за то, что нашли время, чтобы посмотреть на мою проблему здесь :) – cha1988

1

ваш JSON является допустимым, но details является JSON object, не JSON array

используется в деталях с curly brace, что означает, что это object

{ 
"response": "true", 
"errors": "<span>Success</span>", 
"details": { 
    "sid": "15", 
    "pid": "1", 
    "user_email": "[email protected]", 

для массива, заменить фигурные скобки с square brackets

{ 
"response": "true", 
"errors": "<span>Success</span>", 
"details": [ 
    "sid": "15", 
    "pid": "1", 
    "user_email": "[email protected]", 

EDIT: глядя на ваш код, кажется это более быть более полезным, если детали является объектом, а не массив

(также, если у вас есть массив, значения будут просто храниться в виде строки значений и не JSon пары ключ-значение, в соответствии с вашим синтаксисом)

так меняться от

mDetails = jObj.getJSONArray("details"); 

в

mDetails = jObj.getJSONObject("details");