2016-04-21 4 views
0

Я получаю ниже данных JSON, запрашивая URLНевозможно разобрать данные JSON правильно

http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors 

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

Ниже мой код:

 /** 
     * getting Inbox JSON 
     * */ 
     protected String doInBackground(String... args) { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 


      url = "http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors" 


      Log.d(TAG , "URL IS:" + url); 
      JSONObject json = jsonParser.makeHttpRequest(url, "GET", params, false); 

      Log.d("Parse", "Data : " + json.toString()); 


      try { 

       data = json.getJSONArray("actors"); 

        for (int i = 0; i < data.length(); i++) { 
         JSONObject c = data.getJSONObject(i); 

         //Here I am getting all values one by one 


        } 




      } catch (JSONException e) { 
       e.printStackTrace(); 
      } catch(Exception e){ 

      } 

      return null; 
     } 

     protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all products 
     } 

    } 
+0

В коде нет ничего там, где вы добавляете, что в этом списке? –

+0

@NigamPatro - Это более поздняя часть, по крайней мере, ответ переменных «данных», которые я регистрирую, только дает мне эту большую ценность («weekid»: «16», «stDate»: «20160418», «enDate», : "20160424", "stDay": "ПН", "день": [ "ММ", "ММ", "NONE", "NONE", "NONE", "NONE", "NONE"], "fbFlag" : "- 1", "twFlag": "- 1", "pcVpnFlag": "0"}. Он также должен дать мне значение «week15» – user45678

ответ

0

Потому что в вашем for цикла вы ничего с разобранным значением не делаете. Вам нужно сохранить это значение где-то перед повторением цикла.

for (int i = 0; i < data.length(); i++) { 
    JSONObject c = data.getJSONObject(i); 
    String weekId = null; 
    weekId = c.getString("weekid"); //store this value in a String array or ArrayList 
} 
+0

Это вторая часть, я делаю это. Но переменные «данные» должны иметь все значения json I, которые вы отправили. Но это только дает мне много «{« weekid »:« 16 »,« stDate »:« 20160418 »,« enDate »:« 20160424 »,« stDay »:« Mon »,« day »: [" MM " , "ММ", "НЕТ", "НЕТ", "НЕТ", "НЕТ", "НЕТ"], "fbFlag": "- 1", "twFlag": "- 1", "pcVpnFlag": "0 "}" – user45678

+0

@ user45678. Тогда возникает проблема с API-интерфейсом сервера. Вы тестировали этот API с помощью Rest Client? – camelCaseCoder

+0

Yup, я проверил один и тот же URL-адрес в некоторых примерах приложений, которые анализируют JSON, и это дает мне полное значение JSON, но не уверен, что здесь что-то не хватает – user45678

0
ArrayList<String> weekId; 

for (int i = 0; i < data.length(); i++) { 
    JSONObject c = data.getJSONObject(i); 
    String weekId = null; 
    weekId.add(c.getString("weekid")); 


} 
0

в JSON что-нибудь, начиная с { является JsonObject и начиная с [ является JsonArray. После этого см ниже код:

jsonArray=fullJsonObject.getJsonArray("weeklydata"); 
for(int i=0;i<jsonArray.length();i++){ 
    JSONObject obj=jsonArray.getJsonObject(i); 
    /**this will give you the first object for i= 0 now (see below)**/    } 

, что означает, что OBJ будет

obj={"weekid":"16","stDate":"20160418","enDate":"20160424","stDay":"Mon","day":["MM","MM","NONE","NONE","NONE","NONE","NONE"],"fbFlag":"-1","twFlag":"-1","pcVpnFlag":"0"} 

теперь от этого объекта obj, вы можете получить все строки с помощью

String weekid=obj.getString("weekid"); 
String stDate=obj.getString("stDate"); 

и так далее ,

+0

Но у 'weeklydata' есть два объекта, поэтому я должен получить два объекта, тогда как я получаю только один, когда я записываю '{"weekid": "16", "stDate": "20160418", "enDate": "20160424" "stDay": "пН", "день": [ "ММ", "ММ", "NONE", "NONE", "NONE", "NONE", "NONE"], "fbFlag": "- 1 "," twFlag ":" - 1 "," pcVpnFlag ":" 0 "} ' – user45678

+0

для первого цикла вы получите первый объект, для второго вы получите второй объект. Теперь вы можете создать arraylist и добавить их по одному. – inkedTechie

+0

@ user45678, пожалуйста, дайте мне знать, если у вас возникнут проблемы. – inkedTechie

0

Вы должны fatch JSon массив из вашего ответа .. Просто Выполните этот шаг:

JSONObject json=new JSONObject(result); 
JSONArray JArrary= json.getJSONArray("weeklydata"); 

После этого вам нужно вызвать цикл

for (int i= 0; i< JArrary.size(); i++) { 
JSONObject obj= JArrary.getJSONObject(JArrary); 
String weekid = obj.getString("weekid"); 
String stDate = obj.getString("stDate"); 
String enDate = obj.getString("enDate"); 
String stDay = obj.getString("stDay"); 
String fbFlag = obj.getString("fbFlag"); 
String twFlag = obj.getString("fbFlag"); 
String pcVpnFlag = obj.getString("pcVpnFlag"); 
JSONArray newArray= obj.getJSONArray("day"); 
String Day = newArray.toString(); 
} 

Надежда его Поможет вам :)

+0

Jd - Я знаю, что :) – user45678

+0

чем вам нужно @ user45678 –

+0

вы можете упомянуть в своих предложениях @ user45678 –

0

Попробуйте заменить JSONArray ниже:

JSONArray data = json.optJSONArray("weeklydata"); 
1

На самом деле вам нужно установить все данные отдельно для некоторых глобальных переменных, а затем использовать этот цикл for for. попробуйте следующий код:

ArrayList<MyListEntity> subList; 
for (int i = 0; i < data.length(); i++) { 
    //get the information JSON object 
    String subIDInfo = objSub.getJSONObject(i).toString(); 
    //create java object from the JSON object 
    MyListEntity cat = gson.fromJson(subIDInfo, MyListEntity.class); 
    //add to country array list 
    subList.add(cat); 
    } 

здесь MyListEntity является классом этого глобального variables.In этого вы должны получить и установить переменные, которые вы хотите от JSON.

0
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 


} 

/** 
* getting Inbox JSON 
*/ 
protected String doInBackground(String... args) { 
    // Building Parameters 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 


    url = "www.someurl.com" 


    Log.d(TAG, "URL IS:" + url); 
    JSONObject json = jsonParser.makeHttpRequest(url, "GET", params, false); 

    try { 

     JSONArray data = json.getJSONArray("weeklydata"); 
     //I am concerned here. Here it is only giving first set of data (week16) and not second one (week15) 


     List<Weaklydata> list = new ArrayList<>(); 

     for (int a = 0; a < data.length(); a++) { 

      Weaklydata weaklydata = new Weaklydata(); 
      JSONObject jsonObject1 = data.getJSONObject(a); 

      weaklydata.setEnDate(jsonObject1.getString("enDate")); 
      weaklydata.setFbFlag(jsonObject1.getString("fbFlag")); 
      weaklydata.setTwFlag(jsonObject1.getString("pcVpnFlag")); 
      weaklydata.setStDate(jsonObject1.getString("stDate")); 
      weaklydata.setStDay(jsonObject1.getString("stDay")); 
      weaklydata.setWeekid(jsonObject1.getString("twFlag")); 
      weaklydata.setWeekid(jsonObject1.getString("weekid")); 

      List<String> dayList = new ArrayList<>(); 

      JSONArray jsonArray = jsonObject1.getJSONArray("day"); 

      for (int pos = 0; pos < jsonArray.length(); pos++) { 
       dayList.add(jsonArray.getString(pos)); 
      } 

      weaklydata.setDay(dayList); 
      list.add(weaklydata); 
     } 


    } catch (JSONException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 

    } 

    return null; 
} 

protected void onPostExecute(String file_url) { 
    // dismiss the dialog after getting all products 
} 

}

общественного класса Weaklydata {

private String weekid; 
private String stDate; 
private String enDate; 
private String stDay; 
private List<String> day = new ArrayList<String>(); 
private String fbFlag; 
private String twFlag; 
private String pcVpnFlag; 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

/** 
* @return The weekid 
*/ 
public String getWeekid() { 
    return weekid; 
} 

/** 
* @param weekid The weekid 
*/ 
public void setWeekid(String weekid) { 
    this.weekid = weekid; 
} 

/** 
* @return The stDate 
*/ 
public String getStDate() { 
    return stDate; 
} 

/** 
* @param stDate The stDate 
*/ 
public void setStDate(String stDate) { 
    this.stDate = stDate; 
} 

/** 
* @return The enDate 
*/ 
public String getEnDate() { 
    return enDate; 
} 

/** 
* @param enDate The enDate 
*/ 
public void setEnDate(String enDate) { 
    this.enDate = enDate; 
} 

/** 
* @return The stDay 
*/ 
public String getStDay() { 
    return stDay; 
} 

/** 
* @param stDay The stDay 
*/ 
public void setStDay(String stDay) { 
    this.stDay = stDay; 
} 

/** 
* @return The day 
*/ 
public List<String> getDay() { 
    return day; 
} 

/** 
* @param day The day 
*/ 
public void setDay(List<String> day) { 
    this.day = day; 
} 

/** 
* @return The fbFlag 
*/ 
public String getFbFlag() { 
    return fbFlag; 
} 

/** 
* @param fbFlag The fbFlag 
*/ 
public void setFbFlag(String fbFlag) { 
    this.fbFlag = fbFlag; 
} 

/** 
* @return The twFlag 
*/ 
public String getTwFlag() { 
    return twFlag; 
} 

/** 
* @param twFlag The twFlag 
*/ 
public void setTwFlag(String twFlag) { 
    this.twFlag = twFlag; 
} 

/** 
* @return The pcVpnFlag 
*/ 
public String getPcVpnFlag() { 
    return pcVpnFlag; 
} 

/** 
* @param pcVpnFlag The pcVpnFlag 
*/ 
public void setPcVpnFlag(String pcVpnFlag) { 
    this.pcVpnFlag = pcVpnFlag; 
} 

public Map<String, Object> getAdditionalProperties() { 
    return this.additionalProperties; 
} 

public void setAdditionalProperty(String name, Object value) { 
    this.additionalProperties.put(name, value); 
} 

}

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