1. 程式人生 > >FastJson處理數據出現錯誤 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1

FastJson處理數據出現錯誤 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1

字符 bsp 要求 clip 註意 back 格式 iba tro

用ajax發送JSON數據,其中數據類型為List,出現com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1這種類型的錯誤

一般是數據格式問題

首先我們必須清楚JSON的數據格式

JSON中,對象用{ }包圍,映射用“:”表示,集合或數組用[ ]包圍

比如一個Java類的JSON格式為

{        
名稱1:值1,
名稱2:值2 
}        

一個List的JSON格式為

[                  
{名稱1:值,名稱2:值2},
{名稱1:值,名稱2:值2} 
]                  

在這裏需要註意一個問題,在Map中使用“=”連接鍵值,而不是“:”,跟List是不一樣的

而且,必須在我們需要轉化的Java類中重寫toString方法,否則會自動調用默認的toString()方法,只能獲取到這樣一個字符串:“類名+@+hashCode”,而無法拿到內部數據

用eclipse自動生成的的toString()方法也是不符合JSON的格式要求的

自動生成的格式

public String toString() {                                                                                               
   
return "Test [itemlist=" + itemlist + ", address=" + address + ", total=" + total + "]"; } 

必須修改為該格式

public String toString() {                                
  return "{\"itemlist\":\"" + itemlist + "\", \"address\":\"" + address + "\", \"total\":\"" + total + "\"}";
 } 

我們就能在後臺用 JSON.parseArray 方法獲取到我們需要的List了




FastJson處理數據出現錯誤 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1