org.json.JSONException:java.lang.String类型的订单号处的值OR-12345无法转换为int
我试图使用来自虚拟api的json数据填充recycler视图,但它不起作用。我尝试了stack overflow中给出的几乎几种解决方案 下面是我的代码:org.json.JSONException:java.lang.String类型的订单号处的值OR-12345无法转换为int,java,android,Java,Android,我试图使用来自虚拟api的json数据填充recycler视图,但它不起作用。我尝试了stack overflow中给出的几乎几种解决方案 下面是我的代码: public class loadOrdersList extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { ordersList = new ArrayList<>();
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;
}
}
public类loadOrdersList扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
ordersList=newarraylist();
rvor=findViewById(R.id.回收商\查看\订单);
rvor.setHasFixedSize(真);
rvor.setLayoutManager(新的LinearLayoutManager(OrdersActivity.this));
}
@凌驾
受保护的void onPostExecute(void避免){
if(新建CheckNetworkUtil(OrdersActivity.this).isNetworkAvailable()){
Log.d(“TEST”,“------------ordersList:“+ordersList.size());
OrdersAdapter=新的OrdersAdapter(getApplicationContext(),ordersList);
rvor.setAdapter(适配器);
srl.设置刷新(假);
}否则
Toast.makeText(OrdersActivity.this,“无互联网连接!”,Toast.LENGTH_SHORT.show();
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的空位背景(空位…空位){
试一试{
OkHttpClient=新的OkHttpClient();
最终请求=新请求.Builder()
.url(“https://api.myjson.com/bins/la2gh")
.build();
Response responses=client.newCall(request.execute();
JSONArray orders=newjsonarray(responses.body().string());
ordersList=newarraylist();
对于(int i=0;i
我怀疑字符串在执行过程中不支持整数。您希望
order\u no
为整数,因此编写了此代码
Integer orderNo=name.getInt(“订单号”)代码>
但您在回收器视图中收到的是一个字母数字值,用于orderNo
。
因此,您必须将OrderModel
的orderNo
属性的类型从Integer
更改为String
或仅将值限制为Integer
类型 json对象中的字段order\u no
具有值或-12345
。因此,这是数据问题,或者如果该值有效,则需要将OrderModel
类中的orderNo
属性的类型更改为String