溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Json字符串的序列化與反序列化怎么實(shí)現(xiàn)

發(fā)布時(shí)間:2022-08-08 16:05:48 來(lái)源:億速云 閱讀:251 作者:iii 欄目:web開(kāi)發(fā)

今天小編給大家分享一下Json字符串的序列化與反序列化怎么實(shí)現(xiàn)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

Json字符串的序列化與反序列化怎么實(shí)現(xiàn)

Json

JavaScript Object Notation -JavaScript
用于存儲(chǔ)和交換文本信息的語(yǔ)法,進(jìn)行數(shù)據(jù)的傳輸,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

序列化

將數(shù)據(jù)結(jié)構(gòu)或是對(duì)象 轉(zhuǎn)換為 二進(jìn)制串(字節(jié)序列)的過(guò)程 用來(lái)數(shù)據(jù)的傳輸 (把數(shù)據(jù)裝換成json字符串 后端配合@reponseBody來(lái)進(jìn)行數(shù)據(jù)的接受和傳遞)

  • 前端有 json對(duì)象和json字符串

  • 后端有 對(duì)象 和json字符串

后端是Java對(duì)象,想用JSON的格式將數(shù)據(jù)傳輸,就要進(jìn)行序列化操作。
Java對(duì)象序列化了才可以在網(wǎng)絡(luò)上傳輸,或者保存到硬盤(pán)上。
序列化完就變成了json字符串了 通過(guò)jackson這個(gè)序列化框架序列化

在后端通過(guò)在controller上面加@reponseBody注解 將從service層獲取到的java對(duì)象轉(zhuǎn)化為json格式對(duì)象,傳輸?shù)角岸?br/> 在controller的請(qǐng)求參數(shù)前加@reponseBody 就可以將前端傳過(guò)來(lái)的json格式的數(shù)據(jù)接收

前端的序列化和反序列化

  • 將json對(duì)象序列化成json字符串: JSON.stringify(json對(duì)象)–前端把數(shù)據(jù)序列化了 傳給后端

  • 反序列化:將json字符串反序列化為對(duì)象: JSON.parse(str)–后端傳過(guò)來(lái)的序列化過(guò)的數(shù)據(jù)

后端的序列化和反序列化

  • 序列化是 java對(duì)象->json字符串。

  • 反序列化是 json字符串->java對(duì)象

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

這個(gè)ObjectMapper對(duì)象是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>的格式,現(xiàn)在我們需要將List集合序列化為json字符串

MAPPER.writeValueAsString(userMapList);

//反序列化---json格式的字符串要反序列化為對(duì)象

MAPPER.readValue(你要反序列化的json字符串,new TypeReference<要反序列化為什么對(duì)象類型,例如 User.class>() {});

序列化:將Js中的對(duì)象轉(zhuǎn)化成Json格式,序列化的兩個(gè)參數(shù):過(guò)濾器和選項(xiàng)。

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

參數(shù)是一個(gè)數(shù)組,出現(xiàn)在數(shù)組中的屬性才會(huì)序列化,其余屬性忽略不計(jì)。

var json = JSON.stringify(person, [‘username’, ‘password’]);
console.log(json);
{“username”:“l(fā)uohao”,“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”:“l(fā)uohao”,“password”:123456}

JSON.stringify()中的第三個(gè)參數(shù)表示縮進(jìn)的空格數(shù),這樣傳輸?shù)臄?shù)據(jù)可讀性比較好。

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”:“l(fā)uohao”,“password”:123456,“l(fā)ocation”:{“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”: “l(fā)uohao”,
“password”: 123456,
“l(fā)ocation”: {
“province”: “hubei”,
“city”: “wuhan”,
“county”: “qichun”
}
}

以上就是“Json字符串的序列化與反序列化怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI