我有一个要在列表视图中解析的数据的json。我怎么能在列表视图中解析所有带有“ PROMOS且没有” PROMOS”的json数据...?我尝试过这种方式,但它只为我带来json结果中的前5个数据,它不会加载“ PROMOS”部分 这是我的java类。...
protected String doInBackground(String... strings) {
prod = new ArrayList<>();
lista_eligida = (ListView) findViewById(R.id.lista);
String url = "http://danbijann.freeiz.com/tareas.json";
HttpHandler sh = new HttpHandler();
JSONObject jsonStr = sh.makeServiceCall(url);
try {
JSONObject jsonObj = new JSONObject(String.valueOf(jsonStr));
Log.e("JSON", String.valueOf(jsonStr));
JSONArray contacts = jsonObj.getJSONArray("PEDIDOS");
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
String prueba = "";
if(jsonObj.has("prueba") && !jsonObj.isNull("prueba")){
prueba = c.getString("prueba");
}
String promocion = "";
if(jsonObj.has("promocion") && !jsonObj.isNull("promocion")) {
promocion = c.getString("promocion");
}
String prueba2 = "";
if(jsonObj.has("prueba2") && !jsonObj.isNull("prueba2")) {
prueba2 = c.getString("prueba2");
}
String codig = c.getString("codigo");
String des = c.getString("descrip");
String prec = c.getString("precio");
String cantidad = c.getString("cantidad");
String ubica = c.getString("ubica");
HashMap<String, String> contacto = new HashMap<>();
contacto.put("codigo", codig);
contacto.put("descrip", des);
contacto.put("precio", prec);
contacto.put("cantidad", cantidad);
contacto.put("ubica", ubica);
contacto.put("preuba", prueba);
contacto.put("promocion", promocion);
contacto.put("prueba2", prueba2);
Log.d("ADAP", codig);
Log.d("ADAP", des);
Log.d("ADAP", prec);
Log.d("ADAP", cantidad);
Log.d("ADAP", ubica);
prod.add(contacto);
}
} catch (final JSONException e) {
e.getMessage();
}
return null;
}
protected void onPostExecute(String result) {
if (pDialog.isShowing())
pDialog.dismiss();
super.onPostExecute(result);
final ListAdapter adapter = new SimpleAdapter(MainActivity.this, prod,
R.layout.item_carrito, new String[]{ "codigo", "descrip", "precio", "cantidad","ubica","prueba","promocion","prueba2"},
new int[]{R.id.txtcodigo, R.id.txtdescrip, R.id.txtprecio, R.id.cantidad, R.id.txtubica, R.id.txtprueba, R.id.txtpromo, R.id.txtprueba2});
lista_eligida.setAdapter(adapter);
有我的JSON文件
{
"PEDIDOS":[
{
"codigo":"AB235695-1",
"descrip":"MONITOR SAMDUNG DE 32 PULGADAS",
"precio":"526559",
"cantidad":"4",
"ubica":"A:002 S:005 F:001"
},
{
"codigo":"B005695-5",
"descrip":"CPU INTEL PRUEBA DE ESPACIO",
"precio":"526559",
"cantidad":"2",
"PROMOS":[
{
"ubica":"A:002 S:005 F:001",
"promocion":"50 off",
"prueba":"datos mas por prueva",
"prueba2":"otro mas "
}
]
},
{
"codigo":"AB235-6",
"descrip":"MONITOR SAMDUNG DE 32 PULGADAS",
"precio":"526559",
"cantidad":"2",
"ubica":"A:002 S:005 F:001"
},
{
"codigo":"A56895-11",
"descrip":"MONITOR SAMDUNG DE 32 PULGADAS",
"precio":"526559",
"cantidad":"14",
"ubica":"A:002 S:005 F:001"
},
{
"codigo":"B04565-50",
"descrip":"CPU INTEL PRUEBA DE ESPACIO",
"precio":"526559",
"cantidad":"20",
"PROMOS":[
{
"ubica":"A:002 S:005 F:001",
"promocion":"50 off",
"prueba":"datos mas por prueva",
"prueba2":"otro mas "
}
]
}
]
}
答案 0 :(得分:0)
要从PROMOS中获取数据,必须浏览阵列
protected String doInBackground(String... strings) {
prod = new ArrayList<>();
lista_eligida = (ListView) findViewById(R.id.lista);
String url = "http://danbijann.freeiz.com/tareas.json";
HttpHandler sh = new HttpHandler();
JSONObject jsonStr = sh.makeServiceCall(url);
try {
JSONObject jsonObj = new JSONObject(String.valueOf(jsonStr));
Log.e("JSON", String.valueOf(jsonStr));
JSONArray contacts = jsonObj.getJSONArray("PEDIDOS");
for (int i = 0; i < contacts.length(); i++)
{
JSONObject c = contacts.getJSONObject(i);
String codig = c.getString("codigo");
String des = c.getString("descrip");
String prec = c.getString("precio");
String cantidad = c.getString("cantidad");
String prueba = "";
String prueba2 = "";
String ubica = "";
String promocion = "";
if(jsonObj.has("PROMOS") && !jsonObj.isNull("PROMOS"))
{
JSONArray promos = jsonObj.getJSONArray("PROMOS");
for(int j=0;j<promos.length();j++)
{
if(promos.get(j).has("ubica") && !promos.get(j).isNull("ubica")) {
ubica = c.getString("ubica");
}
if(promos.get(j).has("promocion") && !promos.get(j).isNull("promocion")) {
promocion = c.getString("promocion");
}
if(promos.get(j).has("prueba") && !promos.get(j).isNull("prueba")){
prueba = c.getString("prueba");
}
if(promos.get(j).has("prueba2") && !promos.get(j).isNull("prueba2")) {
prueba2 = c.getString("prueba2");
}
}
}
HashMap<String, String> contacto = new HashMap<>();
contacto.put("codigo", codig);
contacto.put("descrip", des);
contacto.put("precio", prec);
contacto.put("cantidad", cantidad);
contacto.put("ubica", ubica);
contacto.put("preuba", prueba);
contacto.put("promocion", promocion);
contacto.put("prueba2", prueba2);
Log.d("ADAP", codig);
Log.d("ADAP", des);
Log.d("ADAP", prec);
Log.d("ADAP", cantidad);
Log.d("ADAP", ubica);
prod.add(contacto);
}
} catch (final JSONException e) {
e.getMessage();
}
return null;
}
仅供参考:如果您的PROMOS数组包含多个对象,那么只会添加最后一个对象,在这种情况下,您必须创建一个promos的arrayList,然后在HMAP中添加该数组列表