如何Post Json Servlet中的数据?
How to Post Json Data In Servlet?
我有一个 json 数据,它可以是这样的:
1st json data
[
{
"id_form_delegate": "1",
"nama_merchant": "MATAHARI BARU SERASI",
"kota_merchant": "BALI",
"alamat_merchant": "JL PAKUBUWONO 2D",
"province_merchant": "BALI",
"mid_merchant": [
"112000902755",
"112000902754"
],
"tid_merchant": [
"2431002547",
"2531016215"
]
}
]
或类似
2nd json data
[
{
"id_form_delegate": "1",
"nama_merchant": "MATAHARI BARU SERASI",
"kota_merchant": "BALI",
"alamat_merchant": "JL PAKUBUWONO 2D",
"province_merchant": "BALI",
"mid_merchant": "112000902755",
"tid_merchant": "2431002547"
}
]
这是我的 servlet 代码
JSONArray arrMid = jsonObject.getJSONArray("mid_merchant");
mid = new String[arrMid.size()];
JSONArray arrTid = jsonObject.getJSONArray("tid_merchant");
tid = new String[arrTid.size()];
//
System.out.println("nama_merchant: " + nama_merchant);
System.out.println("kota_merchant: " + kota_merchant);
System.out.println("alamat_merchant: " + alamat_merchant);
System.out.println("province_merchant: " + province_merchant);
System.out.println("mid: " + mid.length);
System.out.println("tid: " + tid.length);
if post 第一个数据结果成功,但是如果我 post 第二个数据我有错误
这是我的错误日志
net.sf.json.JSONException: JSONObject["mid_merchant"] is not a
JSONArray. net.sf.json.JSONException: JSONObject["tid_merchant"] is
not a JSONArray.
如何使用 JSONArray
获取值 mid_merchant.length & tid_merchant.length
谢谢
问题是 mid_merchant 在第二种情况下不是一个数组,所以你不能使用 JSONArray 来获取它的长度,因为它没有长度,它只是一个字符串。您可以发送一个只有一个值的数组:
"mid_merchant": ["112000902755"],
或者,如果这不是您想要的,您可以检查它是否是一个数组(或者甚至捕获该异常),如果它不是一个数组,则使用 getString 方法获取字符串值:
String stringMid = jsonObject.getString("mid_merchant");
试试下面的代码
JSONArray arrMid=json.getJSONArray("mid_merchant");
String mid=arrMid.getJSONOBJECT.getJSONObject(0).getString("mid_merchant");
JSONArray tidMid=json.getJSONArray("tid_merchant");
String mid=tidMid.getJSONOBJECT.getJSONObject(0).getString("tid_merchant");
您可以使用方法 get(String field)
并检查结果类型:
Object node = jsonObject.get("mid_merchant");
String[] mid;
if (node instanceof JSONArray) {
mid = new String[((JSONArray) node).size()];
} else {
mid = new String[1];
}
或one-liner:
String[] mid = new String[node instanceof JSONArray ? ((JSONArray) node).size() : 1];
我有一个 json 数据,它可以是这样的:
1st json data
[
{
"id_form_delegate": "1",
"nama_merchant": "MATAHARI BARU SERASI",
"kota_merchant": "BALI",
"alamat_merchant": "JL PAKUBUWONO 2D",
"province_merchant": "BALI",
"mid_merchant": [
"112000902755",
"112000902754"
],
"tid_merchant": [
"2431002547",
"2531016215"
]
}
]
或类似
2nd json data
[
{
"id_form_delegate": "1",
"nama_merchant": "MATAHARI BARU SERASI",
"kota_merchant": "BALI",
"alamat_merchant": "JL PAKUBUWONO 2D",
"province_merchant": "BALI",
"mid_merchant": "112000902755",
"tid_merchant": "2431002547"
}
]
这是我的 servlet 代码
JSONArray arrMid = jsonObject.getJSONArray("mid_merchant");
mid = new String[arrMid.size()];
JSONArray arrTid = jsonObject.getJSONArray("tid_merchant");
tid = new String[arrTid.size()];
//
System.out.println("nama_merchant: " + nama_merchant);
System.out.println("kota_merchant: " + kota_merchant);
System.out.println("alamat_merchant: " + alamat_merchant);
System.out.println("province_merchant: " + province_merchant);
System.out.println("mid: " + mid.length);
System.out.println("tid: " + tid.length);
if post 第一个数据结果成功,但是如果我 post 第二个数据我有错误
这是我的错误日志
net.sf.json.JSONException: JSONObject["mid_merchant"] is not a JSONArray. net.sf.json.JSONException: JSONObject["tid_merchant"] is not a JSONArray.
如何使用 JSONArray
获取值 mid_merchant.length & tid_merchant.length谢谢
问题是 mid_merchant 在第二种情况下不是一个数组,所以你不能使用 JSONArray 来获取它的长度,因为它没有长度,它只是一个字符串。您可以发送一个只有一个值的数组:
"mid_merchant": ["112000902755"],
或者,如果这不是您想要的,您可以检查它是否是一个数组(或者甚至捕获该异常),如果它不是一个数组,则使用 getString 方法获取字符串值:
String stringMid = jsonObject.getString("mid_merchant");
试试下面的代码
JSONArray arrMid=json.getJSONArray("mid_merchant");
String mid=arrMid.getJSONOBJECT.getJSONObject(0).getString("mid_merchant");
JSONArray tidMid=json.getJSONArray("tid_merchant");
String mid=tidMid.getJSONOBJECT.getJSONObject(0).getString("tid_merchant");
您可以使用方法 get(String field)
并检查结果类型:
Object node = jsonObject.get("mid_merchant");
String[] mid;
if (node instanceof JSONArray) {
mid = new String[((JSONArray) node).size()];
} else {
mid = new String[1];
}
或one-liner:
String[] mid = new String[node instanceof JSONArray ? ((JSONArray) node).size() : 1];