Разобрать данные массива JSON в Android с помощью Volley - PullRequest
0 голосов
/ 29 мая 2018

Формат данных JSON: Я пытаюсь получить этот массив данных JSON, но не получаю его.

[{"Items":"Chicken Burger","Price":"250","Quantity":"2"}, 
{"Items":"Hamburger","Price":"230","Quantity":"3"}]

Класс MyCartActivity: Я пытался использовать Volley иТеперь я получаю, что JSONArray не может быть преобразован в ошибку JSONObject.Можете ли вы указать, где измениться, чтобы я мог получить свои данные?

 final JsonObjectRequest request = new JsonObjectRequest (Request.Method.POST, fetchurl, null, new  Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

            try {

                JSONArray jsonArray = response.getJSONArray("");

                for (int i=0; i < jsonArray.length(); i++){

                    JSONObject object = jsonArray.getJSONObject(i);

                    String Price = object.getString("Price");
                    String Name = object.getString("Items");
                    String Quantity = object.getString("Quantity");

                    adapter = new CartAdapter(MyCartActivity.this, list);
                    list.add(new CartPojo(Price, Name, Quantity));
                    adapter.notifyDataSetChanged();

                    progressbar.setVisibility(View.GONE);
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });

     requestQueue.add(request);
  }

Класс адаптера:

    public CartAdapter(Activity activity, List datalist) {

    this.activity = activity;
    this.datalist = datalist;
   }

   @Override
   public int getCount() {
   return datalist.size();
  }

  @Override
  public Object getItem(int position) {
    return datalist.get(position);
 }

  @Override
  public long getItemId(int position) {
    return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {

    if (inflater == null)
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null)
        convertView = inflater.inflate(R.layout.cart_item_layout, null);

    TextView ItemName = convertView.findViewById(R.id.item_name);
    TextView Price = convertView.findViewById(R.id.item_price);
    TextView Quantity = convertView.findViewById(R.id.items_quantity);

    CartPojo pojo = datalist.get(position);

    ItemName.setText(String.valueOf(pojo.getName()));
    Price.setText(String.valueOf(pojo.getPrice()));
    Quantity.setText(String.valueOf(pojo.getQuantity()));

    return convertView;
  }

Пожалуйста, предоставьте мне несколько решений ....

1 Ответ

0 голосов
/ 29 мая 2018

Ответ не может быть проанализирован в JSONObject, потому что это не то, а JSONArray.Вы можете отправить простое StringRequest и затем проанализировать строку ответа в JSONArray с помощью конструктора JSONArray(response).

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        JSONArray arr = new JSONArray(response);
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
});

Или использовать JsonArrayRequest. Вот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...