首页 > web前端 > js教程 > 正文

示例解析Json对象Json字符串的序列化与反序列化

WBOY
发布: 2022-08-08 15:40:34
转载
2484人浏览过

本篇文章给大家带来了关于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包下面的,这是他的依赖

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online
       <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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:CSDN网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号