原
2023年07月12日 10:20:38
天空海的眼_
2018-12-26
閒著重新看到了這篇就來補充net.sf.json主要是pom匯入jar包有乙個衝突的問題而且匯入的比較亂,所以也可以用別的json工具模擬如阿里的fastjson
com.alibaba
fastjson
1.2.41
用法都大同小異
單個物件轉換
string json = "";
t t = jsonobject.parseobject(json, t.class);
列表物件轉換
string json = "[,]";
listt = jsonarray.parsearray(json, t.class);
t為自定義實體類,這裡為
public class t
在開發中有多次使用到net.sf.json.jsonobject與net.sf.json.jsonarray對一些json物件進行解析並轉換成實體類的經驗。
使用這個工具類如果不引入它依賴的jar報或者引入錯誤都會導致很多的問題,在這裡記錄一下,特別注意的是那個jdk15,因為這個jar包是有庫名要求的,不加的話會匯入失敗。
重新關注到這個問題是在我同學讓我幫忙解決乙個問題的時候,我會在後面簡單的說明一下這個工具類我是怎麼用的。
當然如果以這種形式直接將form編碼格式化會是
coursename=%e7%a9%ba%e4%b9%98%e8%8b%b1%e8%af%ad&score=1&coursename=%e5%8c%96%e5%ad%a6&score=4
後台如果定義兩個string來接收當然也可以實現,(string coursename, string score)中得到的會是兩個按逗號分割開的字串
但這顯然就違背了物件導向的思想,如果我們前端傳過來的資料多了亂了,後台的邏輯處理是不是又會顯得很複雜,資料與資料之間是不是容易導致出錯。
所以前端傳過來的應該是需要乙個物件的json資料而不是兩個簡單的字串。後台需要的是乙個物件。
所以我在前端對form表單提交的資料進行了乙個簡單的處理:
ps:這塊處理的**沒過深的去考慮,可以嘗試進行優化
$.prototype.serializeobject = function () ;
h = o.hasownproperty;
for (i = 0; i < a.length; i++) else ;}}
t.push(o);
return t;
};
這個方法的意思就是將表單資料格式化成乙個物件,我們可以對比看一下效果。
是不是就是一種類的思想了,我們只需要把json資料格式化成string傳遞給後台即可。
$.ajax(,
success: function (data) else }})
後端拿到這個字串後就需要用到jsonarray.fromobject()來對資料進行處理,並呼叫jsonarray.tolist將其轉化為實體類集合,後面的操作就是類與物件的方式了。
@responsebody
public string substar(string list)
jsonarray的物件取出來的就是乙個jsonobject,同樣也可以單獨將其轉化成實體類。
java物件轉換為json字串
public static void main string args jsonarray jsonarray.fromobject temparry system.out.println jsonarray.tostring 列印出來的結果 a b c list轉換為json listtempli...
json與字串轉換
一 將json字串轉換成js物件 建立json字串 var str 將此字串轉換成物件 1.使用eval函式左轉換 var obj eval json 2.使用json物件提供的函式做轉換 json是瀏覽器提供的物件 var obj json.parse str 3.引入外部api來做轉換 該檔案由...
json字串格式轉換
1.物件相互轉換 物件轉字串 user user newuser jsonobject object jsonobject.fromobject user string jsonstr object.tostring 字串轉物件 jsonobject jsonobj jsonobject.fromo...