範例解析Json物件Json字串的序列化與反序列化

2022-08-08 18:01:51
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於Json物件的相關問題,JavaScript Object Notation用於儲存和交換文字資訊的語法,進行資料的傳輸,JSON比 XML 更小、更快,更易解析,下面一起來看一下,希望對大家有幫助。

【相關推薦:、】

Json

JavaScript Object Notation -JavaScript
用於儲存和交換文字資訊的語法,進行資料的傳輸,JSON比 XML 更小、更快,更易解析。

var person = {"name": "張三", age: 23, 'gender': true};var ps = [{"name": "張三", "age": 23, "gender": true},
          {"name": "李四", "age": 24, "gender": true},
          {"name": "王五", "age": 25, "gender": false}];

Json字串

var b='{"name":"2323","sex":"afasdf","age":"6262"}';//json字串
 console.log(b);//{"name":"2323","sex":"afasdf","age":"6262"}
  alert(typeof(b));//string

序列化

將資料結構或是物件 轉換為 二進位制串(位元組序列)的過程 用來資料的傳輸 (把資料裝換成json字串 後端配合@reponseBody來進行資料的接受和傳遞)

  • 前端有 json物件和json字串
  • 後端有 物件 和json字串

後端是Java物件,想用JSON的格式將資料傳輸,就要進行序列化操作。
Java物件序列化了才可以在網路上傳輸,或者儲存到硬碟上。
序列化完就變成了json字串了 通過jackson這個序列化框架序列化

在後端通過在controller上面加@reponseBody註解 將從service層獲取到的java物件轉化為json格式物件,傳輸到前端
在controller的請求引數前加@reponseBody 就可以將前端傳過來的json格式的資料接收

前端的序列化和反序列化

  • 將json物件序列化成json字串: JSON.stringify(json物件)–前端把資料序列化了 傳給後端
  • 反序列化:將json字串反序列化為物件: JSON.parse(str)–後端傳過來的序列化過的資料

後端的序列化和反序列化

  • 序列化是 java物件->json字串。
  • 反序列化是 json字串->java物件

後端序列化和反序列化的方法一

這個ObjectMapper物件是jackson包下面的,這是他的依賴

       <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.3</version>
        </dependency>
//類屬性,

private static final ObjectMapper MAPPER = new ObjectMapper();

//序列化-----userMapList是List<user>的格式,現在我們需要將List集合序列化為json字串

MAPPER.writeValueAsString(userMapList);

//反序列化---json格式的字串要反序列化為物件

MAPPER.readValue(你要反序列化的json字串,new TypeReference<要反序列化為什麼物件型別,例如 User.class>() {});

序列化:將Js中的物件轉化成Json格式,序列化的兩個引數:過濾器和選項。

var person = {
username: ‘luohao’,
password: 123456,
location: ‘whu’
}

引數是一個陣列,出現在陣列中的屬性才會序列化,其餘屬性忽略不計。

var json = JSON.stringify(person, [‘username’, ‘password’]);
console.log(json);
{「username」:「luohao」,「password」:123456}
var person = {
username: ‘luohao’,
password: 123456,
location: ‘whu’,
hometown: ‘wuhan’,
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case ‘location’: return undefined;
case ‘hometown’: return undefined;
default: return value;
}
});
console.log(json);

{「username」:「luohao」,「password」:123456}

JSON.stringify()中的第三個參數列示縮排的空格數,這樣傳輸的資料可讀性比較好。

var person = {
username: ‘luohao’,
password: 123456,
location: {
province: ‘hubei’,
city: ‘wuhan’,
county: ‘qichun’
},
hometown: ‘wuhan’,
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case ‘hometown’: return undefined;
default: return value;
}
});
console.log(json);
{「username」:「luohao」,「password」:123456,「location」:{「province」:「hubei」,「city」:「wuhan」,「county」:「qichun」}}
var person = {
username: ‘luohao’,
password: 123456,
location: {
province: ‘hubei’,
city: ‘wuhan’,
county: ‘qichun’
},
hometown: ‘wuhan’,
}
var json = JSON.stringify(person, function filter(key, value) {
switch(key) {
case ‘hometown’: return undefined;
default: return value;
}
}, 2);
console.log(json);

{
「username」: 「luohao」,
「password」: 123456,
「location」: {
「province」: 「hubei」,
「city」: 「wuhan」,
「county」: 「qichun」
}
}

【相關推薦:、】

以上就是範例解析Json物件Json字串的序列化與反序列化的詳細內容,更多請關注TW511.COM其它相關文章!