服务器的JSON数据无法解析 [英] JSON data from server could not be parsed
问题描述
我收到了DataTables警告:服务器的JSON数据无法解析,这是由于JSON格式错误导致的
我知道这可能是其他线程的重复,我正在使用java和dataTables我的代码..我得到JSON格式的输出,但在打印时客户端无法识别。
当我验证了 http://jsonlint.com/ 它的格式正确。我不知道是什么导致这个错误。
{iTotalRecords:5,sEcho:1,aaData:[[V2993ASFKH230943,Honda ,Accord,TL),[V4833RE9SNF30943,Acura,TL],[V4833A39SNF30943,Accord V9383RE9SNF30943,Acura,MDX]],iTotalDisplayRecords:5}
任何帮助将非常感激。 / p>
谢谢
编辑
try {
JSONObject jsonResponse = new JSONObject();
jsonResponse.put(sEcho,sEcho);
jsonResponse.put(iTotalRecords,iTotalRecords)
jsonResponse.put(iTotalDisplayRecords,iTotalDisplayRecords);
while(itr.hasNext()){
映射rs =(Map)itr.next();
FleetEquipment eqpmt = new FleetEquipment();
eqpmt.setVinNumber((String)rs.get(VIN_ID));
eqpmt.setMake((String)rs.get(MAKE));
eqpmt.setModel((String)rs.get(MODEL));
JSONArray row = new JSONArray();
row.put(eqpmt.getVinNumber())。put(eqpmt.getMake())
.put(eqpmt.getModel());
data.put(row);
}
jsonResponse.put(aaData,data);
response.setContentType(application / json);
response.getWriter()。print(jsonResponse.toString());
} catch(JSONException e){
// TODO自动生成的catch块
e.printStackTrace();
response.setContentType(text / html);
response.getWriter()。print(e.getMessage());
}
编辑1
<%@ taglib uri =http://java.sun.com/portlet_2_0prefix =portlet%>
<%@ taglib uri =http://java.sun.com/jsp/jstl/coreprefix =c%>
<%@ taglib uri =http://java.sun.com/jsp/jstl/fmtprefix =fmt%>
< portlet:defineObjects />
< portlet:resourceURL var =listURLid =listescapeXml =false/>
< script type =text / javascript>
$(document).ready(function(){
$('#listTable')。dataTable({
bServerSide:true,
sAjaxSource:< ;%= listURL.toString()%>,
bProcessing:true,
sPaginationType:full_numbers,
bJQueryUI:true
}) ;
});
< / script>< / head>
< body>
< table id =listTable>
< thead>
< tr>
< th> VIN ID< / th>
< th> MAKE< / th>
> MODEL< / th>
MODEL1< / th>
> Model2< / th>
< / tr>
< / thead>
< tbody>
< / tbody>
< / table>
\ r\\\
\r\\\
\r\\\
\r\\\
\r\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \
\r\\\
\t\r\\\
\t\t\r\\\
\t\t\t\\\\\\\\\\\\\\\\\\ \t \r\\\
\t\t\t\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ n \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ VINVID MAKE MODEL,
状态:200,
statusText:
OK},
fnServerData:
函数(e,j,l,k){\\\
k.jqXHR = i.ajax({
url:e,
data:j,
success:function(e){
i(k.oInstance).trigger(\ xhr\,k); l(e);},dataType:\json\,cache:!1,type:k.sServerMethod,error:function(e,i){\parsererror \== i&& alert(\DataTables警告:JSON数据从服务器无法解析,这是由JSON格式化错误引起的。\);}}); \\\
},aoServerParams:[],
sServerMethod:GET
fnFormatNumber:function(e){\\\
if(1000> e){\\\
return e; \\\
} \\\
for(var i = e + \\ ,e = i.split(\\),j = \\,i = i.length,l = 0; 1 <一世; l ++){\\\
0 === l%3&& \ 0 0!== l&& (j = this.oLanguage.sInfoThousands + j),j = e [i-l-1] + j; \\\
} \\\
return j; \\\
},
aLengthMenu 10,25,50,100],
iDraw:1,
bDrawing:true,
iDrawError:-1,
_iDisplayLength
_iDisplayStart:0,
_iDisplayEnd:0,
_iRecordsTotal:0,
_iRecordsDisplay:0,
bJUI
oClasses:{
sTable:dataTable,
sPagePrevEnabled:fg-button ui-button ui-state-default ui-corner-left,
sPagePrevDisabled:fg-button ui-button ui-state-default ui-corner-left ui-state-disabled,
sPageNextEnabled:fg-button ui-button ui-state-default ui-corner-right,
sPageNextDisabled:fg-button ui-button ui-state-default ui-corner-right ui-state-disabled,
sPageJU INP:ui-icon ui-icon-circle-arrow-e,
sPageJUIPrev:ui-icon ui-icon-circle-arrow-w,
sPageButton fg-button ui-button ui-state-default,
sPageButtonActive:fg-button ui-button ui-state-default ui-state-disabled,
sPageButtonStaticDisabled:fg -button ui-button ui-state-default ui-state-disabled,
sPageFirst:first ui-corner-tl ui-corner-bl,
sPagePrevious:previous ,
sPageNext:next,
sPageLast:last ui-corner-tr ui-corner-br,
sStripeOdd:odd,
sStripeEven:even,
sRowEmpty:dataTables_empty,
sWrapper:dataTables_wrapper,
sFilter:dataTables_filter,
sInfo:dataTables_info,
sPaging:dataTables_paginate fg-buttonset ui-buttons et fg-buttonset-multi ui-buttonset-multi paging_,
sLength:dataTables_length,
sProcessing:dataTables_processing,
sSortAsc:ui-state -default,
sSortDesc:ui-state-default,
sSortable:ui-state-default,
sSortableAsc:ui-state-default ,
sSortableDesc:ui-state-default,
sSortableNone:ui-state-default,
sSortColumn:sort_,
sSortJUIAsc:css_right ui-icon ui-icon-triangle-1-n,
sSortJUIDesc:css_right ui-icon ui-icon-triangle-1-s,
sSortJUI :css_right ui-icon ui-icon-carat-2-ns,
sSortJUIAscAllowed:css_right ui-icon ui-icon-carat-1-n,
sSortJUIDescAllowed css_right ui-icon ui-icon-carat-1-s,
sSortJUIWrapper:DataTables_sort_包装,
sSortIcon:DataTables_sort_icon,
sScrollWrapper:dataTables_scroll,
sScrollHead:dataTables_scrollHead ui-state-default,
sScrollHeadInner :dataTables_scrollHeadInner,
sScrollBody:dataTables_scrollBody,
sScrollFoot:dataTables_scrollFoot ui-state-default,
sScrollFootInner:dataTables_scrollFootInner,
sFooterTH:ui-state-default
},
bFiltered:true,
bSorted:true,
bSortCellsTop:false,
oInit:{
bServerSide:真实,
sAjaxSource:!/ WPS / myportal / UT / p / B1 / hc09DoJAEIbhs3CCGX5kl3IRdVGiolFkG7Mho2IQEkAKTy8aGwt0ukmeLy8oSE3PctAeWY4LB1Cl7vKzbvOq1MXrV-6RBz73fVMg9-QUw0j6bCLmiGj2IO3BeCakwyJEPuImhkLumLsNLBT2v30C6psgrlhP7Jlki72Fof0BvxJvgAMnEJayulGfShUbDMUISU1Nda8 b处理:true,
sPaginationType:full_numbers,
bJQueryUI:true
},
aoDestroyCallback :[],
fnRecordsTotal:function(){\\\
return this.oFeatures.bServerSide? parseInt(this._iRecordsTotal,10):this.aiDisplayMaster.length; \\\
},
fnRecordsDisplay:function(){\\\
return this.oFeatures.bServerSide? parseInt(this._iRecordsDisplay,10):this.aiDisplay.length; \\\
},
fnDisplayEnd:function(){\\\
return this.oFeatures.bServerSide? !1 === this.oFeatures.bPaginate || - 1 == this._iDisplayLength? this._iDisplayStart + this.aiDisplay.length:Math.min(this._iDisplayStart + this._iDisplayLength,this._iRecordsDisplay):this._iDisplayEnd; \\\
},
sInstance:fleetList,
iTabIndex:0,
fnStateLoad:function(e){\\\
var e = this.oApi._fnReadCookie(e.sCookiePrefix + e.sInstance),j; \\\
try {\\\
j = \function\=== typeof i.parseJSON? i.parseJSON(e):eval(\(\+ e + \)\); \\\
} catch(l){\\\
j = null; \\\
} \\\
返回j; \\\
},
fnStateSave:function(e,i){\\\
this.oApi._fnCreateCookie(e.sCookiePrefix + e.sInstance,this.oApi._fnJsonString(i) ,e.cookieDuration,e.sCookiePrefix,e.fnCookieCallback); \\\
},
iInitDisplayStart:-1,
nTableReinsertBefore:null
}],
tablesDisplayData:[
[]
],
tablesDisplayExtra:[
[]
]
}
};
I am getting "DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error" I know this might be a duplicate of other threads, I am using java and dataTables in my code.. I am getting the output in JSON format but its not recognized on the client-side while printing.
When I verified the JSON object in http://jsonlint.com/ its is in correct format. I am not sure what is causing this error.
{"iTotalRecords":5,"sEcho":"1","aaData":[["V2993ASFKH230943","Honda","Accord"],["V2993A39SNF30943","Honda","CRV"],["V4833A39SNF30943","Acura","TSX"],["V4833RE9SNF30943","Acura","TL"],["V9383RE9SNF30943","Acura","MDX"]],"iTotalDisplayRecords":5}
Any help would be really appreciated.
Thanks
EDIT
try {
JSONObject jsonResponse = new JSONObject();
jsonResponse.put("sEcho", sEcho);
jsonResponse.put("iTotalRecords", iTotalRecords);
jsonResponse.put("iTotalDisplayRecords", iTotalDisplayRecords);
while (itr.hasNext()) {
Map rs = (Map) itr.next();
FleetEquipment eqpmt = new FleetEquipment();
eqpmt.setVinNumber((String) rs.get("VIN_ID"));
eqpmt.setMake((String) rs.get("MAKE"));
eqpmt.setModel((String) rs.get("MODEL"));
JSONArray row = new JSONArray();
row.put(eqpmt.getVinNumber()).put(eqpmt.getMake())
.put(eqpmt.getModel());
data.put(row);
}
jsonResponse.put("aaData", data);
response.setContentType("application/json");
response.getWriter().print(jsonResponse.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
response.setContentType("text/html");
response.getWriter().print(e.getMessage());
}
EDIT 1
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<portlet:defineObjects/>
<portlet:resourceURL var="listURL" id="list" escapeXml="false"/>
<script type="text/javascript">
$(document).ready(function () {
$('#listTable').dataTable({
"bServerSide": true,
"sAjaxSource": "<%=listURL.toString()%>",
"bProcessing": true,
"sPaginationType": "full_numbers",
"bJQueryUI": true
});
});
</script></head>
<body>
<table id="listTable">
<thead>
<tr>
<th>VIN ID</th>
<th>MAKE</th>
<th>MODEL</th>
<th>MODEL1</th>
<th>Model2</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\r\n VIN ID MAKE MODEL ","
status ":200,"
statusText ":"
OK "},"
fnServerData ":"
function (e, j, l, k) {\n k.jqXHR = i.ajax({
url: e,
data: j,
success: function (e) {
i(k.oInstance).trigger(\"xhr\", k);l(e);}, dataType: \"json\", cache: !1, type: k.sServerMethod, error: function (e, i) {\"parsererror\" == i && alert(\"DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.\");}});\n}", "aoServerParams": [],
"sServerMethod": "GET",
"fnFormatNumber": "function (e) {\n if (1000 > e) {\n return e;\n }\n for (var i = e + \"\", e = i.split(\"\"), j = \"\", i = i.length, l = 0; l < i; l++) {\n 0 === l % 3 &&\n 0 !== l && (j = this.oLanguage.sInfoThousands + j), j = e[i - l - 1] + j;\n }\n return j;\n}",
"aLengthMenu": [10, 25, 50, 100],
"iDraw": 1,
"bDrawing": true,
"iDrawError": -1,
"_iDisplayLength": 10,
"_iDisplayStart": 0,
"_iDisplayEnd": 0,
"_iRecordsTotal": 0,
"_iRecordsDisplay": 0,
"bJUI": true,
"oClasses": {
"sTable": "dataTable",
"sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left",
"sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",
"sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right",
"sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",
"sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
"sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
"sPageButton": "fg-button ui-button ui-state-default",
"sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled",
"sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled",
"sPageFirst": "first ui-corner-tl ui-corner-bl",
"sPagePrevious": "previous",
"sPageNext": "next",
"sPageLast": "last ui-corner-tr ui-corner-br",
"sStripeOdd": "odd",
"sStripeEven": "even",
"sRowEmpty": "dataTables_empty",
"sWrapper": "dataTables_wrapper",
"sFilter": "dataTables_filter",
"sInfo": "dataTables_info",
"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",
"sLength": "dataTables_length",
"sProcessing": "dataTables_processing",
"sSortAsc": "ui-state-default",
"sSortDesc": "ui-state-default",
"sSortable": "ui-state-default",
"sSortableAsc": "ui-state-default",
"sSortableDesc": "ui-state-default",
"sSortableNone": "ui-state-default",
"sSortColumn": "sorting_",
"sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
"sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
"sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s",
"sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n",
"sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s",
"sSortJUIWrapper": "DataTables_sort_wrapper",
"sSortIcon": "DataTables_sort_icon",
"sScrollWrapper": "dataTables_scroll",
"sScrollHead": "dataTables_scrollHead ui-state-default",
"sScrollHeadInner": "dataTables_scrollHeadInner",
"sScrollBody": "dataTables_scrollBody",
"sScrollFoot": "dataTables_scrollFoot ui-state-default",
"sScrollFootInner": "dataTables_scrollFootInner",
"sFooterTH": "ui-state-default"
},
"bFiltered": true,
"bSorted": true,
"bSortCellsTop": false,
"oInit": {
"bServerSide": true,
"sAjaxSource": "/wps/myportal/!ut/p/b1/hc09DoJAEIbhs3CCGX5kl3IRdVGiolFkG7Mho2IQEkAKTy8aGwt0ukmeLy8oSE3PctAeWY4LB1Cl7vKzbvOq1MXrV-6RBz73fVMg9-QUw0j6bCLmiGj2IO3BeCakwyJEPuImhkLumLsNLBT2v30C6psgrlhP7Jlki72Fof0BvxJvgAMnEJayulGfShUbDMUISU1Nda8zgs2pIGqjvGkhznR2oYg6Ktb6THBThRde2UMIw3gC131G1Q!!/",
"bProcessing": true,
"sPaginationType": "full_numbers",
"bJQueryUI": true
},
"aoDestroyCallback": [],
"fnRecordsTotal": "function () {\n return this.oFeatures.bServerSide ? parseInt(this._iRecordsTotal, 10) : this.aiDisplayMaster.length;\n}",
"fnRecordsDisplay": "function () {\n return this.oFeatures.bServerSide ? parseInt(this._iRecordsDisplay, 10) : this.aiDisplay.length;\n}",
"fnDisplayEnd": "function () {\n return this.oFeatures.bServerSide ? !1 === this.oFeatures.bPaginate || - 1 == this._iDisplayLength ? this._iDisplayStart + this.aiDisplay.length : Math.min(this._iDisplayStart + this._iDisplayLength, this._iRecordsDisplay) : this._iDisplayEnd;\n}",
"sInstance": "fleetList",
"iTabIndex": 0,
"fnStateLoad": "function (e) {\n var e = this.oApi._fnReadCookie(e.sCookiePrefix + e.sInstance), j;\n try {\n j = \"function\" === typeof i.parseJSON ? i.parseJSON(e) : eval(\"(\" + e + \")\");\n } catch (l) {\n j = null;\n }\n return j;\n}",
"fnStateSave": "function (e, i) {\n this.oApi._fnCreateCookie(e.sCookiePrefix + e.sInstance, this.oApi._fnJsonString(i), e.iCookieDuration, e.sCookiePrefix, e.fnCookieCallback);\n}",
"iInitDisplayStart": -1,
"nTableReinsertBefore": null
}],
"tablesDisplayData": [
[]
],
"tablesDisplayExtra": [
[]
]
}
};
这篇关于服务器的JSON数据无法解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!