JSON 数据详解

一、json值的类型
1.简单值: 可以表示字符串,数值,布尔值,null不支持undefined(json的数值表示: 2 )
2.对象: 一组有序的键值对,每个键值对的值可以是简单值,也可以是复杂数据类型。(json的字符串:“hello world”)。json字符串与JavaScript字符串的区别,json必须用双引号。
3.数组:一组有序值的列表,数组的值可以是简单值,也可以是复杂数据类型。
不支持变量,函数,以及对象实例
二、json对象与javascript对象
区别:
//javascript对象
var obj = {
name: "liu",
age: 33,
};
// json对象
{
"name": "liu",
"age": 33,
}
三、字符串与json对象转换
1、JSON.parse()。parse把字符串解析成原生javascript值(javascript对象);每个属性名都必须用双引号
var str = '{"name":"huangxiaojian","age":"23"}';
console.log(JSON.parse(str)); //Object { name: "huangxiaojian", age: "23" }
接收另一个参数,为区别JSON.stringify()的过滤函数(过滤器), 因而叫还原函数。如下:
var book = {
title: "hello",
author: [ "apple" ],
year: 300,
releaseDate: new Date(2016)
};
var jsonText = JSON.stringify( book )
var bookCopy = JSON.parse( jsonText, function( key, value ) {
if (key == "releaseDate" ) {
return new Date( value );
} else {
return value;
}
} );
console.log( bookCopy.releaseDate.getFullYear() );
以上代码book对象,有个releaseDate属性,保存Date对象,经过序列化后变成有效的JSON数据字符串,然后经过解析又在bookCopy中还原为一个Date对象,当遇到releaseDate键值时,会基于相应的值创建一个新的Date对象,结果就是bookCopy.releaseDate属性中保存一个新的Date对象。
2、JSON.stringify( object, selector, retract ) 对象,过滤器(数组或函数),保留缩进。
JSON.stringify()把json对象序列化为字符串。(忽略函数、原型)
var a = {a:1,b:2};
console.log(JSON.stringify(a)); //{"a":1,"b":2}不包含任何空格字符或缩进
3、JSON.stringify()第二个参数,过滤器为数组
过滤器:可以使数组(如果是数组,就把数组中有的属性保留),也可以是函数(如果是函数,传两个参数:属性和属性值)。
var person = {
name: "liu",
age: 33,
eat: [ "apple" ],
sex: "man"
}
var jsonText = JSON.stringify( person, ["eat", "age" ] )
console.log( jsonText ) //{"eat":["apple"],"age":33}
4、JSON.stringify()第二个参数为函数
函数:函数的两个参数()。switch中参数是属性名(必须字符串)。如果是undefined则忽略属性,(这个value参数是整个序列化后的对象)
特别注意,value在《javascript高级程序设计第三版》中表述和我的不同。可能是我的理解有问题,但是我测试了,结果也是序列化后的值。谁能解决了可以告诉我。(page:566~567)
var person = {
"name": "liu",
"age": 33,
"eat": [ "apple" ],
"sex": "man"
}
var jsonText = JSON.stringify( person, function( key, value ) {
// console.log( value )
switch("eat") {
case "eat":
return [3,4,5,5,5].join(",");
case "age":
return 33;
case "sex":
return undefined;
default:
return value;
}
} )
console.log( jsonText ) //"3,4,5,5,5"
5、缩进,最大缩进为10。超过10 会转换为10
var person = {
"name": "liu",
"age": 33,
"eat": [ "apple" ],
"sex": "man"
}
var jsonText = JSON.stringify( person, null, 4 )
console.log( jsonText )
/////////////////////////结果,带有格式////////////////////
{
"name": "liu",
"age": 33,
"eat": [
"apple"
],
"sex": "man"
}
//特别的缩进方式
var jsonText = JSON.stringify( person, null, "---" )
console.log( jsonText )
/////////////////////////结果,带有格式////////////////////
{
---"name": "liu",
---"age": 33,
---"eat": [
------"apple"
---],
---"sex": "man"
}
6、toJSON()方法,返回自身的json数据格式。
var date = new Date()
console.log( date.toJSON() )
//person自身没有json数据格式,这是错的。
var person = {
"name": "liu",
"age": 33,
"eat": [ "apple" ],
"sex": "man"
}
console.log( person.toJSON() )
7、为对象添加toJSON()方法,返回字符串则是字符串格式,对象则是对象格式,单个数值就是数值格式。
var person = {
"name": "liu",
"age": 33,
"eat": [ "apple" ],
"sex": "man",
"toJSON": function () {
return this.age
}
}
console.log( person.toJSON() ) // 33
toJSON()可以做过滤器补充
8、假设一个对象传入JSON.stringify(),序列化该对象的顺序
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# JSON
# 数据详解
# 数据
# 数据实例详解
# JS对象与JSON格式数据相互转换
# $.ajax json数据传递方法
# android客户端从服务器端获取json数据并解析的实现代码
# jQuery Ajax异步处理Json数据详解
# JS解析json数据并将json字符串转化为数组的实现方法
# Android中使用Gson解析JSON数据的两种方法
# 浅析ajax请求json数据并用js解析(示例分析)
# jquery的ajax异步请求接收返回json数据实例
# JAVA对象JSON数据互相转换的四种常见情况
# 序列化
# 第二个
# 键值
# 则是
# 不支持
# 双引号
# 这是
# 有效值
# 数据格式
# 有个
# 告诉我
# 也要
# 希望能
# 就把
# 做过
# 谁能
# 第三个
# 谢谢大家
# 转换为
# 创建一个
相关文章:
子杰智能建站系统|零代码开发与AI生成SEO优化指南
建站主机服务器选型指南与性能优化方案解析
深圳网站制作案例,网页的相关名词有哪些?
如何零基础在云服务器搭建WordPress站点?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何通过万网虚拟主机快速搭建网站?
如何在万网开始建站?分步指南解析
建站主机选购指南与交易推荐:核心配置解析
如何在万网ECS上快速搭建专属网站?
如何快速生成可下载的建站源码工具?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站主机SSH密钥生成步骤及常见问题解答?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
如何解决VPS建站LNMP环境配置常见问题?
兔展官网 在线制作,怎样制作微信请帖?
一键网站制作软件,义乌购一件代发流程?
如何正确下载安装西数主机建站助手?
如何配置WinSCP新建站点的密钥验证步骤?
c# 服务器GC和工作站GC的区别和设置
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站之星备案流程有哪些注意事项?
建站之星安装提示数据库无法连接如何解决?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何用花生壳三步快速搭建专属网站?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
网站制作网站,深圳做网站哪家比较好?
c# 在ASP.NET Core中管理和取消后台任务
独立制作一个网站多少钱,建立网站需要花多少钱?
建站主机如何安装配置?新手必看操作指南
Thinkphp 中 distinct 的用法解析
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
建站主机数据库如何配置才能提升网站性能?
营销式网站制作方案,销售哪个网站招聘效果最好?
如何在万网主机上快速搭建网站?
微信小程序 input输入框控件详解及实例(多种示例)
如何通过VPS建站实现广告与增值服务盈利?
如何通过cPanel快速搭建网站?
如何选择最佳自助建站系统?快速指南解析优劣
建站主机默认首页配置指南:核心功能与访问路径优化
网站制作企业,网站的banner和导航栏是指什么?
制作网站的基本流程,设计网站的软件是什么?
如何通过商城免费建站系统源码自定义网站主题?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速生成橙子建站落地页链接?
如何登录建站主机?访问步骤全解析
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
南京网站制作费用,南京远驱官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。