[英]How to get rid of type warning when using JSONArray and JSONObject
[英]How to get rid of the error: JSONArray[0] is not a JSONObject
收到錯誤,而JSONArray [0]不是JSONObject,而從JSON數組中獲取對象(Java代碼行#5)。
客戶端上的jQuery
function setCosting(){
var costingArray = {};
costingArray = getCostingArray();
var costingData = JSON.stringify(costingArray);
alert(costingData);
$.ajax({
type:"POST",
url:"/costApp/budgetline.do?action=setCosting",
data:{"costingData": costingData},
datatype:'json',
success: function (msg) {
if (msg) {
alert('success');
}
},
error: function (msg) {
alert('error');
}
});
function getCostingArray() {
var rows = $("table tbody tr");
var dataset = [];
rows.each(function(i, row){
var rowset = {};
var $row = $(row);
rowset['travelType'] = $row.find('#travelType').val();
rowset['staff'] = $row.find('#staff').val();
rowset['trip'] = $row.find('#trip').val();
dataset.push(rowset);
});
return dataset;
}
$('#save').click(function() {
setCosting();
});
Java代碼
Map mpVal = request.getParameterMap();
JSONObject rootObj = new JSONObject(mpVal);
JSONArray arrayObj = rootObj.getJSONArray("costingData");
for(int m=0; m<arrayObj.length(); m++){
**JSONObject costing = arrayObj.getJSONObject(m);**
System.out.println(costing.getInt("travelType"));
System.out.println(costing.getInt("staff"));
System.out.println(costing.getInt("trip"));
}
該數組包含一個sigle元素,其值為:
[
{
"travelType": "1",
"staff": "red",
"trip": ""
},
{
"travelType": "2",
"staff": "blue",
"trip": ""
},
{
"travelType": "3",
"staff": "green",
"trip": ""
}
]
任何意見,將不勝感激。
由於數組包含單個元素,其值本身就是數組,因此您需要
JSONArray arrayObj = rootObj.getJSONArray("costingData").getJSONArray(0);
for(int m=0; m<arrayObj.length(); m++){
JSONObject costing = arrayObj.getJSONObject(m);
System.out.println(costing.getString("travelType"));
System.out.println(costing.getString("staff"));
System.out.println(costing.getString("trip"));
}
並且,由於staff
和trip
是字符串,因此您需要使用getString()
而不是getInt()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.