gpt4 book ai didi

android - 使用 volley 获取 json 对象和数组

转载 作者:行者123 更新时间:2023-11-29 01:01:35 24 4
gpt4 key购买 nike

我正在尝试获取以下 JSONArray 对象。有 2 个项目,但通过我实现的循环,我只能获取 1 个项目。我使用了 2 个 for 循环。如何解决?还有其他获取所有数据的方法吗?如果我从 -1 开始 for 循环,那么它会显示数组索引超出范围。

JSON结构如下

    {
"status": 200,
"list": [
{
"quot_uid": "QUOTE2018@1",
"id": "1",
"expiry_date": "2018-05-29",
"created_at": "2018-05-22 11:45:58",
"left_days": "9",
"items": [
{
"ITEM_NAME": "Copper Wires",
"UNIT": "MT",
"qty": "5",
"make": null
},
{
"ITEM_NAME": "OFC Cables",
"UNIT": "MT",
"qty": "2",
"make": null
}
]
}
]
}

这是我已经尝试过的代码

 JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("list");
tv.removeAllViewsInLayout();
int flag = 1;

for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
JSONArray jsonArray1 = jsonObject1.getJSONArray("items");
for (int j = 0; j < jsonArray1.length(); j++) {
TableRow tr = new TableRow(Main2Activity.this);
tr.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
if (flag == 1) {

TextView t1 = new TextView(Main2Activity.this);
t1.setPadding(10, 30, 10, 30);
t1.setText("ITEM NAME");
t1.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
t1.setTop(20);
t1.setTextColor(Color.BLACK);
t1.setTextSize(15);
t1.setTypeface(null, Typeface.BOLD);
tr.addView(t1);

TextView t2 = new TextView(Main2Activity.this);
t2.setPadding(10, 30, 10, 30);
t2.setText("QTY");
t2.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
t2.setTop(20);
t2.setTextColor(Color.BLACK);
t2.setTextSize(15);
t2.setTypeface(null, Typeface.BOLD);
tr.addView(t2);

tv.addView(tr);
final View vline = new View(Main2Activity.this);
vline.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 10));
vline.setBackgroundColor(Color.BLUE);
tv.addView(vline);
flag = 0;
} else {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
TextView tv1 = new TextView(Main2Activity.this);
tv1.setPadding(5, 30, 5, 30);
String item_nm = jsonObject2.getString("ITEM_NAME");
tv1.setText(item_nm);
tv1.setTextColor(Color.BLACK);
tv1.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
tv1.setTextSize(15);
tr.addView(tv1);

TextView tv2 = new TextView(Main2Activity.this);
tv2.setPadding(5, 30, 5, 30);
String item_qty = jsonObject2.getString("qty");
tv2.setText(item_qty);
tv2.setTextColor(Color.BLACK);
tv2.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
tv2.setTextSize(15);
tr.addView(tv2);

tv.addView(tr);
final View vline1 = new View(Main2Activity.this);
vline1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1));
vline1.setBackgroundColor(Color.rgb(1, 132, 143));
tv.addView(vline1);
}

最佳答案

试试这个对我有用。我只是给出了完整的架构打印或使用您想要的值作为您的要求,作为一个示例,我记录了几个值。

主要区别是我用过

JSONObject listObj1=new JSONObject(jsonArray.get(i).toString());

代替你的台词

JSONObject listObj1=newjsonArray.getJSONObject(i);

完整的代码框架如下。我在字符串中使用了您的 JSON,而不是从响应中获取,尝试一下是否有效,然后将其更改为响应。它对我很有效。

        String response="{'status':200,'list':[{'quot_uid':'QUOTE2018@1','id':'1','expiry_date':'2018-05-29','created_at':'2018-05-2211:45:58','left_days':'9','items':[{'ITEM_NAME':'CopperWires','UNIT':'MT','qty':'5','make':null},{'ITEM_NAME':'OFCCables','UNIT':'MT','qty':'2','make':null}]}]}";
JSONObject jsonObject = null;
try {
jsonObject = new JSONObject(response);

String status=jsonObject.get("status").toString();
Log.e("Status is ",status);
JSONArray jsonArray = jsonObject.getJSONArray("list");
for(int i=0;i<jsonArray.length();i++){

//In this loop, you will parse all the array elements inside list array

JSONObject listObj1=new JSONObject(jsonArray.get(i).toString());

String qoutid= listObj1.getString("quot_uid");

Log.e("quot uid is ",qoutid);

JSONArray lisItems=listObj1.getJSONArray("items");


for(int j=0;j<lisItems.length();j++){


JSONObject innerObj=new JSONObject(lisItems.get(j).toString());

String ITEM_NAME=innerObj.getString("ITEM_NAME");

Log.e("TAG",ITEM_NAME);

}

}


} catch (JSONException e) {
Log.e("TAG","Error "+e.toString());
e.printStackTrace();
}

还要检查错误日志,因为它会返回任何 JSON 解析错误

关于android - 使用 volley 获取 json 对象和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50734443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com