大致說(shuō)明介紹Json數(shù)據(jù)異常相關(guān)介紹
Json數(shù)據(jù)異常對(duì)象轉(zhuǎn)化為jsonObject(類似dwr中對(duì)dwr.xml定義),對(duì)對(duì)象中的set/list只進(jìn)行***層轉(zhuǎn)化,再轉(zhuǎn)化容易出現(xiàn)死循環(huán)(比如user對(duì)象含有roles,roles為role對(duì)象聚集。。。。。
所以解決這個(gè)異常方法就是在不需要串行化的屬性的getter前加上Json數(shù)據(jù)異常, 就是@JSON(serialize=false) 一開(kāi)始就寫(xiě)了一個(gè)簡(jiǎn)單的例子,來(lái)測(cè)試struts2+json,是沒(méi)有問(wèn)題的。但是后來(lái),加入正式的項(xiàng)目中就出現(xiàn)問(wèn)題,而后開(kāi)始研究了一下!
主要出錯(cuò)類型(部分代碼): Json數(shù)據(jù)異常一種簡(jiǎn)單的數(shù)據(jù)格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。#t#
JSON的規(guī)則很簡(jiǎn)單: 對(duì)象是一個(gè)無(wú)序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔。具體細(xì)節(jié)參考。。。。。。。。
舉個(gè)簡(jiǎn)單的例子:
- 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);
- }
這表示一個(gè)user對(duì)象,擁有username, age, info, address 等屬性。同樣也可以用JSON來(lái)簡(jiǎn)單的修改數(shù)據(jù),修改上面的例子。
- 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數(shù)據(jù)異常提供了json.js包,下載http://www.json.org/json.js 后,將其引入然后就可以簡(jiǎn)單的使用object.toJSONString()轉(zhuǎn)換成JSON數(shù)據(jù)。