gpt4 book ai didi

java - 在JAVA中读取JSON数组

转载 作者:行者123 更新时间:2023-12-01 21:15:40 25 4
gpt4 key购买 nike

我在读取 JSON 数组时遇到问题,因为在我的数组内,有另一个数组,我很困惑。请查看我的代码。

    JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
JSONObject obj = JSONFactoryUtil.createJSONObject();
JSONObject jsonObjectReturn = JSONFactoryUtil.createJSONObject();

//JSONOBJECT RETURN
JSONArray array = JSONFactoryUtil.createJSONArray();



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

callableStatement = (CallableStatement) conn
.prepareCall("{call TaxpaymentSPv2(?,?,?,?,?,?,?,?)}");


callableStatement.setString(1, obj.getString("rdoCode"));
callableStatement.setString(2, obj.getString("rcoCode"));
callableStatement.setString(3, obj.getString("tpTin"));
callableStatement.setString(4, obj.getString("tpName"));
callableStatement.setString(5, obj.getString("tpAddress"));
callableStatement.setString(6, obj.getString("receiptType"));
callableStatement.registerOutParameter(7, Types.VARCHAR);
callableStatement.registerOutParameter(8, Types.VARCHAR);

callableStatement.executeUpdate();

String rNo = callableStatement.getString(7);
String date = callableStatement.getString(8);


//---->This is my second Array inside my JSON where im having an error <------
String checkArray = obj.getString("checkArray");
JSONArray jsonArrayCheck = JSONFactoryUtil.createJSONArray(stringArray);


JSONArray jsonArray2 = jsonObject.getJSONArray("checkArray");
System.out.println("..........." + jsonArray2);

jsonObjectReturn = JSONFactoryUtil.createJSONObject();
jsonObjectReturn.put("rNo", rNo);
jsonObjectReturn.put("date", date);
array.put(jsonObjectReturn);
}

return array;

这是我的 JSON 输入:

{
"dataArray": [{

"rdoCode": "001",
"rcoCode": "002911",
"tpTin": "200746409",
"tpName": "JOHN DOE",
"tpAddress": "LA CALIFORNIA",
"receiptType":"ROR",
"receiptMode":"AUTO",
"manualReceiptNo":"",
"checkArray":[{
"ptchkNumber": 14546,
"ptchkDate": 2014-01-01,
"ptchkAmount": 5332,
"ptchkStatus": ""
}]
}]
}

我无法解析给我这个错误的“checkArray”对象。 com.liferay.portal.kernel.json.JSONException:org.json.JSONException:JSONArray 文本必须以“[”开头,位于 1 [字符 2 第 1 行]。有人可以告诉我该怎么做吗?谢谢。

最佳答案

您需要更改代码:

String checkArray = obj.getString("checkArray");

以下代码:

JSONArray checkArray = obj.getJSONArray("checkArray");
JSONObject checkObj = checkArray.getJSONObject(0);
int ptchkNumber = checkObj.getInt("ptchkNumber");

因为键 checkArray 是 JSON 中的数组,所以不能使用 getString() 而是使用 getJSONArray()

更新:

要获取数组中的每个对象,您可以迭代并访问每个对象:

JSONArray checkArray = obj.getJSONArray("checkArray");
JSONObject checkObj;
for (int itemIndex=0, totalObject = checkArray.length(); itemIndex < totalObject; itemIndex++) {
checkObj = checkArray.getJSONObject(itemIndex);
int ptchkNumber = checkObj.getInt("ptchkNumber");
}

关于java - 在JAVA中读取JSON数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209550/

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