2013-08-11 4 views
0

Привет, так что я закодирован JSON из PHP и выходит так:Декодирование JSON в Java Android

{"ticket":[ 
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"}, 
{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"} 
]} 


    object  {1} 
    ticket  [2] 
      0  {6} 
a : 10.00 
b : 1.00 
c : 1.00 
d : abcde 
e : 7 

     1  {6} 
a : 10.00 
b : 1.00 
c : 1.00 
d : abcde 
e : 7 

когда я открываю это в Java все это воспринимается как один JSONObject, который я ворваться в два JSONArray s первая содержит работу ticket, а затем второй содержит

{"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"}, 
    {"ticket":[{"a":"10.00","b":"1.00","c":"1.00","d":"abcde","f":"7"} 

Второй JSONArray, как вы ожидаете, имеет длину 2 и может быть разбита на две строки выше (каждый в виде строки), но есть способ я могу получить данные из строки без использования на ней/токенизации, ища значения a, b, c ... и т. д.?

ответ

2

Ваш JSON при условии испорчено. Отсутствует закрытие ] на втором и третьем ticket ключах.

Также, если возможно, вы должны изменить имена, ключи 3 ticket очень запутывают, когда вы ищете ошибки в объекте JSON. Основываясь на этом, я не уверен, как должен выглядеть ваш JSON.

Для доступа к значениям вы должны использовать предоставленные функции JSONObject. Они просты в использовании, и вам не нужно создавать промежуточные переменные.

Если предположить, что JSON выглядит так и хранится в переменной JSONObject называется json:

{ "tickets": 
    [ 
    { "tickets2": [{"a": 1, "b": 2, ...}] }, 
    { "tickets3": [{"a": 3, "b": 4, ...}] } 
    ] 
} 

Было бы можно получить доступ к значениям, как это:

json.getJSONArray("tickets").getJSONArray("tickets2").getInt("a"); // = 1 

Если вы просто хотите проверьте, доступны ли значения, используйте функцию isNull.

if (json.getJSONArray("tickets").getJSONArray("tickets2").isNull("a")) { 
    //a is not available 
} 

Имейте в виду, что получить * функции бросить JSONException когда желаемая ключ не доступен и isNull возвращает истину для значения null, а также.

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