今天處理前后數據傳輸的時候遇到了問題。
前台拼參數是這樣寫的 '&rowData=' + JSON.stringify(rowData);
后台解析出的對象卻總是null,而且沒有拋ParseException,具體寫法如下:
DifferenceReportItem item = JSON.parse(rowDataToSelect, DifferenceReportItem.class);
entity檢查了,沒有錯誤。
在debug后台接收的數據發現。后台接到的數據是這樣的
{"timelyRateName":" 合 計","should_be":"2181","real_be":"358","undelivered_exceeded":"1231","delivered_exceeded":"101","undelivered_unexceeded":"491","rate_be":
"16.02,"reportKey":"category_report"},莫名其妙少了“,多了個空格,成了這樣
"rate_be":"16.0 2,
果斷懷疑是%的問題。於是前台做了如下處理:
var rateBeStr = rowData.rate_be;
rateBeStr = rateBeStr.substring(0,rateBeStr.length-1);
rowData.rate_be = rateBeStr+ "%25";
解析完畢的json:{"timelyRateName":"合計","should_be":"2181","real_be":"358","undelivered_exceeded":"1231","delivered_exceeded":"101","undelivered_unexceeded":"491", "rate_be":"16.0%","reportKey":"category_report"}
rateBeStr = rateBeStr.substring(0,rateBeStr.length-1);
rowData.rate_be = rateBeStr+ "%25";
解析完畢的json:{"timelyRateName":"合計","should_be":"2181","real_be":"358","undelivered_exceeded":"1231","delivered_exceeded":"101","undelivered_unexceeded":"491", "rate_be":"16.0%","reportKey":"category_report"}
OK,問題解決!
總結:JSON.stringify()函數處理串時會做轉碼,在有特殊符號的時候一定要注意轉換。
在java代碼中,把json解析成的對象為null而不報異常,就要看看串中是不是有特殊符號了。
歡迎留言說下遇到的其他特殊符號。