2012-05-23 2 views
2

Я пытаюсь преобразовать следующий JSON в Android приложении:org.json.JSON.typeMismatch при преобразовании строки

[ 
    { 
     "patient_id": "16", 
     "patient_firstname": "Ion", 
     "patient_name": "Vasilescu", 
     "location": "Cardiologie, Salon 4, Pat 2" 
    }, 
    { 
     "patient_id": "22", 
     "patient_firstname": "Claudiu", 
     "patient_name": "Popovici", 
     "location": "Pneumologie, Salon 5, Pat 5" 
    }, 
    { 
     "patient_id": "15", 
     "patient_firstname": "Monica", 
     "patient_name": "Suciu", 
     "location": "Cardiologie, Salon 4, Pat 2" 
    } 
] 

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

Мой Java код выглядит следующим образом:

public JSONObject toJson(String jString){ 
    System.out.println("I've got"+jString+"*"); 

    try { 
     return new JSONObject(jString); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("Error while converting to JSONObject"); 
    } 

    return null; 
} 

ли кто-нибудь есть советы о том, как избавиться от моей ошибки? Или о том, как реализовать лучшее решение? Благодарю.

+0

очень хорошо объяснил учебник: http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ –

+0

Что ошибка вы получаете? Положите полную трассировку стека, пожалуйста. – Perception

ответ

3

Вы получаете результат в виде массива JSon не строка JSON, поэтому постарайтесь изменить slass

Ваш код:

public JSONObject toJson(String jString){ 
    System.out.println("I've got"+jString+"*"); 

    try { 
     return new JSONObject(jString); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("Error while converting to JSONObject"); 
    } 

    return null; 
} 

После модификации:

public JSONObject toJson(String jString){ 
    System.out.println("I've got"+jString+"*"); 

    try { 
     return new JSONArray(jString); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("Error while converting to JSONObject"); 
    } 

    return null; 
} 
+0

Посмотрите на свой код, который вы возвращаете JSONArray, но метод retun type - это JSONObject? –

+0

спасибо; оно работает; – user1411688

2

См here ваш JSON содержит только JsonArray Перечислите так просто конвертируйте String в JSONArray вместо JSONObject как:

public JSONArray toJson(String jString){ 
    System.out.println("I've got"+jString+"*"); 

    try { 
     return new JSONArray(jString); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     System.out.println("Error while converting to JSONArray"); 
    } 

    return null; 
} 
+0

спасибо; оно работает; – user1411688

Смежные вопросы