前端後端傳輸數據格式的要求
java語言是一種強類型的語言,必須定義類型,然後生成實例,而js卻不是,雖然它也是面向對象的,但是它並沒有先定義類這一種概念(但是js也有類型),它是基於原型的一種模式,和java完全不同。很顯然,二者的原理,機制,語法並不能兼容。二者產生的對象並不能被對方解讀。再來看網絡傳輸,通常就是http/tcp協議嘍,使用的其實是請求-響應,再說白了即使字符串,不論後臺傳來的是什麼類型的數據,也不論前臺傳回的什麼類型的數據,網絡層統統當作字符串處理,它也沒有辦法來解析類型啊!說到這裏,前後臺傳數據也就只能用字符串了,那也就意味着它們各自都要完成一個轉換過程,把要發送的轉換成字符串,把要收到的字符串解析成自己的對象。因爲傳輸的字符串會涉及前後臺雙方的解析和處理,所以雙方都必須認識或者知道字符串該怎麼轉,也就是說,最好能有一種通用的規則來編輯,轉換字符串,這個標準或者協議就是JSON,JSON就是用來交換數據的,是一種string,一種獨立於平臺的數據格式。
這樣一來,前臺就需要把自己的數據類型轉成JSON,然後發給後臺,後臺在用JSON來解析數據,轉換成自己的類型。後臺傳前臺一樣。那麼,怎麼把自己的數據轉成JSON呢?
1,如果知道JSON什麼格式,完全可以自己拼寫string,但是這樣不能避免完全正確,而且可能會有安全隱患,那麼就用第三方提供的庫。
2,在js中,可以使用JSON.stringify()函數,把一個js中的對象轉成json的string,也可以使用JSON.parse()函數,把一個json的string轉成一個js裏的對象。
3,在java中,有JSONObject和JSONArray兩個對象,轉string就用它們的toString()函數,轉對象,就用toBean()和toArray()函數。需要注意的是JSONObject必須是string的鍵。
代碼實現
web
//建立json對象
var json = {};
//爲json對象添加元素
json.itemType1=itemType1;
json.itemType2=itemType2;
json.itemType3=itemType3;
json.itemdesc=itemdesc;
//將json對象轉化爲字符串類型
var josns = JSON.stringify(json);
後端
//將json字符串轉換成json對象
JSONObject jsonObject = JSON.parseObject(json);
//獲取json對象裏面的數據
jsonObject.getString("itemType2")