2016-05-12 4 views
0

Я попытался разобрать данные, которые все еще не в состоянии сделать.Как разобрать этот ответ JSON на Android?

String jsonData = "[{\"id\":\"7\",\"customer_id\":\"1\",\"product_type_id\":\"1\",\"quantity\":\"1\",\"ordered_on\":\"2015-12-01\",\"product_consumption_type\":\"general\",\"reason\":\"\",\"productType\":{\"id\":\"1\",\"name\":\"Full Cream Milk\",\"description\":\"\",\"measurement\":\"\"}},{\"id\":\"3\",\"customer_id\":\"1\",\"product_type_id\":\"1\",\"quantity\":\"0\",\"ordered_on\":\"2015-12-02\",\"product_consumption_type\":\"general\",\"reason\":\"\",\"productType\":{\"id\":\"1\",\"name\":\"Full Cream Milk\",\"description\":\"\",\"measurement\":\"\"}}]"; 

Это то, что я пытался до сих пор:

try { 
    JsonArrayRequest req = new JsonArrayRequest(jsonData, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      Log.d(TAG, response.toString()); 
      try { 
       //parsing the value of jsaon array 
       for (int i = 0; i < response.length(); i++) { 
        JSONObject details = (JSONObject) response.get(i); 
        String da = details.getString("ordered_on"); 
        int qty = Integer.parseInt(details.getString("quantity")); 
        JSONObject prod_det = details.getJSONObject("productType"); 
        String na = prod_det.getString("name"); 
        ProductType pt = new ProductType(na, qty); 
        Product prod = new Product(da, pt); 
        list.add(prod); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(MonthlySummaryActivity.this, "ERROR" + e.getMessage(), Toast.LENGTH_SHORT).show(); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(MonthlySummaryActivity.this, "error::" + error.getMessage(), Toast.LENGTH_LONG).show(); 

     } 
    }); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 
loading.hide(); 
return list; 
+1

В чем проблема или ошибка? –

+2

Возможный дубликат [Как разобрать JSON в Java] (http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –

+0

@ Джонатан Дэррил, я не могу отложить данные –

ответ

0

Надеется, что я мог бы помочь и.

public List<Product> parse(String jsonData) throws JSONException { 
    List<Product> productList = new ArrayList(); 
    JSONArray orderArray = new JSONArray(jsonData); 
    for (int i = 0, count = orderArray.length(); i < count; i++) { 
     JSONObject productJO = orderArray.getJSONObject(i); 

     ProductType productType = new ProductType(); 
     // parse the product type 
     JSONObject productTypeJO = productJO.getJSONObject("productType"); 
     String typeId = productTypeJO.getString("id"); 
     String name = productTypeJO.getString("name"); 
     String description = productTypeJO.getString("description"); 
     String measurement = productTypeJO.getString("measurement"); 

     productType.setId(typeId); 
     productType.setName(name); 
     productType.setDescription(description); 
     productType.setMeasurement(measurement); 

     // parse the product 
     String id = productJO.getString("id"); 
     String customerId = productJO.getString("customer_id"); 
     String productTypeId = productJO.getString("product_type_id"); 
     String quantity = productJO.getString("quantity"); 
     String orderedOn = productJO.getString("ordered_on"); 
     String productConsumptionType = productJO.getString("product_consumption_type"); 
     String reason = productJO.getString("reason"); 

     Product product = new Product(); 
     product.setId(id); 
     product.setCustomerId(customerId); 
     product.setProductTypeId(productTypeId); 
     product.setQuantity(quantity); 
     product.setOrderedOn(orderedOn); 
     product.setProductConsumptionType(productConsumptionType); 
     product.setReason(reason); 
     product.setProductType(productType); 

     productList.add(product); 
    } 
    return productList; 
} 
2

Вы можете анализировать данные JSON двумя способами.

1) Создайте свой собственный парсерный класс.

2) Используйте библиотеку для разбора строки json.

1) Если строка json короткая, вы должны пойти со своим собственным парсерным классом, как показано ниже.

String name; 

     try { 
      JSONArray array = new JSONArray(YOUR JSON STRING); 
      JSONObject obj; 
      for (int i = 0; i < array.length(); i++) { 
       obj = array.getJSONObject(i); 
       name = obj.getString(KEY_NAME); 
       ...... 
      } 

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

2) использование Gson библиотека. для Gson u можно использовать this.

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