Json數據異常對象轉化為JSonObject(類似dwr中對dwr.XML定義),對對象中的set/list只進行第一層轉化,再轉化容易出現死循環(比如user對象含有roles,roles為role對象聚集。。。。。
所以解決這個異常方法就是在不需要串行化的屬性的getter前加上JSon數據異常, 就是@JSON(serialize=false) 一開始就寫了一個簡單的例子,來測試struts2+JSon,是沒有問題的。但是後來,加入正式的項目中就出現問題,而後開始研究了一下!
主要出錯類型(部分代碼): JSon數據異常一種簡單的數據格式,比XML更輕巧。 JSON 是 Javascript 原生格式,這意味著在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。
JSON的規則很簡單: 對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。具體細節參考。。。。。。。。
舉個簡單的例子:
- function showJSON() {
- var user =
- {
- "username":"andy",
- "age":20,
- "info": { "tel": "123456", "cellphone": "98765"},
- "address":
- [
- {"city":"beijing","postcode":"222333"},
- {"city":"newyork","postcode":"555666"}
- ]
- }
- alert(user.username);
- alert(user.age);
- alert(user.info.cellphone);
- alert(user.address[0].city);
- alert(user.address[0].postcode);
- }
這表示一個user對象,擁有username, age, info, address 等屬性。同樣也可以用JSON來簡單的修改數據,修改上面的例子。
- function showJSON() {
- var user =
- {
- "username":"andy",
- "age":20,
- "info": { "tel": "123456", "cellphone": "98765"},
- "address":
- [
- {"city":"beijing","postcode":"222333"},
- {"city":"newyork","postcode":"555666"}
- ]
- }
- alert(user.username);
- alert(user.age);
- alert(user.info.cellphone);
- alert(user.address[0].city);
- alert(user.address[0].postcode);
- user.username = "Tom";
- alert(user.username);
- }
JSon數據異常提供了json.JS包,下載http://www.json.org/json.JS 後,將其引入然後就可以簡單的使用object.toJSONString()轉換成JSON數據。