2015-07-27 3 views
-2

На данный момент я могу петлю через мой JSON массив «» поз "и хранить все переменные в том, что в список массива.Как извлечь значение JSON за пределами массива

То, что я пытаюсь делать:

Как можно легко разобрать TOUR & даты, которые находятся за пределами «поз» массив

Я хотел бы хранить значения в "tour" & "дата" в две отдельные строковые переменные.

Мое понимание: json.getJSONArray() не может использоваться в этом случае, как json.getJSONArray (TAG_MESSAGES); только извлекает данные массива «pos».

JSON Структура:

{ 
    "pos": [ 
     { 
      "pos": "", 
      "person": "", 
      "thur": "", 
      "score": "", 
      "round": "" 
     }, 
     { 
      "pos": "2", 
      "person": "John", 
      "thur": "", 
      "score": "16", 
      "round": "3" 
     }, 
     { 
      "pos": "3", 
      "person": "Peter Lynch", 
      "thur": "", 
      "score": "5", 
      "round": "2" 
     } 
    ], 
    "tour": "Camping", 
    "date": "Thursday Jul 23 - Sunday Jul 26, 2015" 
    } 

Код для Разбираем JSON поз массив:

// ALL JSON nodes 
private static final String TAG_MESSAGES = "pos"; 
private static final String TAG_ID = "pos"; 
private static final String TAG_FROM = "person"; 
private static final String TAG_EMAIL = "thur"; 
private static final String TAG_SUBJECT = "round"; 
private static final String TAG_DATE = "score"; 


// These are outside of array pos  
private static final String TAG_TOUR = "tour"; 
private static final String TAG_TOURDATE = "date"; 



try { 
      inbox = json.getJSONArray(TAG_MESSAGES); 

      inbox.toString(); 


      // looping through All messages 
      for (int i = 0; i < inbox.length(); i++) { 
       JSONObject c = inbox.getJSONObject(i); 

       // Storing each json item in variable 
       String id = c.getString(TAG_ID); 
       // creating new HashMap 
       HashMap<String, String> map = new HashMap<String, String>(); 

       // adding each child node to HashMap key => value 
       map.put(TAG_ID, id); 
       map.put(TAG_FROM, from); 
       map.put(TAG_EMAIL, mailer); 
       map.put(TAG_DATE, date); 
       map.put(TAG_SUBJECT, subject); 

       // adding HashList to ArrayList 
       inboxList.add(map); 
+0

вы можете напишите json.getString («тур»); –

+0

Ну, я использую inbox = json.getJSONArray (TAG_MESSAGES); в моем коде, который принимает только массив pos, время тура и дата выходит за пределы этого массива. Извините, что я новичок в этом –

+0

Да ниже inbox = json.getJSONArray() написал этот String tour = json.getString ("tour") –

ответ

2

, как вы можете получить JSONArray от вашего JSON, вы можете получить String от него тоже.

что-то вроде этого:

json.getString("tour"); 
json.getString("date"); 
+0

Но в моем коде я перебираю json.getJSONArray (TAG_MESSAGES); - это массив «pos», поэтому тур и дата выходят за рамки этого. Если это имеет смысл, значит getString («tour») не будет работать в этом случае –

+0

@SarahBoland, честно говоря, это не так. этот код будет работать либо вне петли ur, либо внутри. но здравый смысл подсказывает, что у вас есть это за пределами цикла, где u находится в JSONArray – nafas

+0

Извините, я новичок в этом, и я устал от этого подхода, и я всегда получаю NULL. –

2

Попробуйте это,

String tour = "", date = ""; 

try { 
if(json.has("tour")) 
      tour= json.getString("tour"); 
if(json.has("date")) 
      date= json.getString("date"); 

} Catch(Exception e) { 
} 

Который не будет врезаться даже если нет ключа дата/тур (если отсутствует)

+0

Также получите NULL для обеих строк здесь –

+0

@SarahBoland использует 'optString' вместо' getString' – Raghunandan

1
 inbox = json.getJSONArray(TAG_MESSAGES); 
     String tour=json.getString("tour"); 
     String date=json.getString("date");   
+0

Я получаю NULL для тура и даты, когда я использую этот –

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