首頁 > web前端 > js教程 > 主體

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

WBOY
發布: 2022-08-08 15:40:34
轉載
2174 人瀏覽過

本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了關於Json對象的相關問題,JavaScript Object Notation用於存儲和交換文本信息的語法,進行數據的傳輸,JSON比XML 更小、更快,更容易解析,下面一起來看一下,希望對大家有幫助。

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

【相關推薦:javascript影片教學web前端

##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”
}
}
登入後複製

【相關推薦:

javascript影片教學web前端

以上是範例解析Json物件Json字串的序列化與反序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
es6
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!