您的位置: 翼速应用 > 业内知识 > web前端 > 正文

关于Json对象Json字符串的序列化与反序列化之详细解析

本文是关于Json对象Json字符串的序列化与反序列化之详细解析,主要介绍了关于Json对象的相关问题,JavaScript Object Notation用于存储和交换文本信息的语法,进行数据的传输,JSON比 XML 更小、更快,更易解析,下面一起来看一下。


关于Json对象Json字符串的序列化与反序列化之详细解析


关于Json对象Json字符串的序列化与反序列化之详细解析



Json


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字符串的序列化与反序列化之详细解析,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题