niel
niel

Reputation: 125

org.json.JSONException: Value OR-12345 at order_no of type java.lang.String cannot be converted to int

I am trying to populate the recycler view using json data from dummy api but it is not working. I have tried almost several solutions given in stack overflow.

Here is my code below:

public class loadOrdersList extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        ordersList = new ArrayList<>();
        rvor = findViewById(R.id.recycler_view_orders);
        rvor.setHasFixedSize(true);
        rvor.setLayoutManager(new LinearLayoutManager(OrdersActivity.this));
    }

    @Override
    protected void onPostExecute(Void aVoid) {

        if (new CheckNetworkUtil(OrdersActivity.this).isNetworkAvailable()) {
        Log.d("TEST", "------------------ordersList: " + ordersList.size());
        OrdersAdapter adapter = new OrdersAdapter(getApplicationContext(), ordersList);
        rvor.setAdapter(adapter);
            srl.setRefreshing(false);
        } else
            Toast.makeText(OrdersActivity.this, "No Internet Connection!", Toast.LENGTH_SHORT).show();
        }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected Void doInBackground(Void... voids) {

            try {
                OkHttpClient client = new OkHttpClient();

                final Request request = new Request.Builder()
                        .url("https://api.myjson.com/bins/la2gh")
                        .build();

                Response responses = client.newCall(request).execute();

                JSONArray orders = new JSONArray(responses.body().string());

                ordersList = new ArrayList<>();

                for (int i = 0; i < orders.length(); i++) {
                    JSONObject name = orders.getJSONObject(i);
                    String customerName = name.getString("customer_name");
                    String agentAssigned = name.getString("agent_assigned");
                    String orderId = name.getString("order_id");
                    Integer totalQuantity = name.getInt("total_quantity");
                    String orderDate = name.getString("order_date");
                    Integer orderNo = name.getInt("order_no");
                    String schoolYear = name.getString("school_year");
                    String company = name.getString("company");
                    String deliveryDate = name.getString("delivery_date");
                    String orderStatus = name.getString("order_status");
                    Integer grossRevenue = name.getInt("gross_revenue");
                    Integer netRevenue = name.getInt("net_revenue");
                    Integer totalOrdered = name.getInt("total");
                    Integer grandTotalOrdered = name.getInt("grand_total");
                    OrderModel orderModel = new OrderModel(customerName
                            ,agentAssigned
                            ,orderId
                            ,totalQuantity
                            ,orderDate
                            ,orderNo
                            ,schoolYear
                            ,company
                            ,deliveryDate
                            ,orderStatus
                            ,grossRevenue
                            ,netRevenue
                            ,totalOrdered
                            ,grandTotalOrdered);

                    ordersList.add(orderModel);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
    }
}

I suspected that integer is not supported by the string during execution.

Upvotes: 1

Views: 64

Answers (1)

Ujjawal Gupta
Ujjawal Gupta

Reputation: 199

You are expecting order_no to be an Integer and thus written this Integer orderNo = name.getInt("order_no"); But you are receiving an alphanumeric value for orderNo in recycler view. So either you have to change the type of orderNo property of OrderModel from Integer to String or restrict values to Integer type only.

Upvotes: 1

Related Questions