JSON --- 一种轻量级的数据交换格式
2024-09-03 10:31:51
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。本篇主要介绍javascript中json的使用方法。
1. 语法
JSON支持表示三种类型的数据:简单值、对象、数组。
- 简单值
和javascript基本数据类型一样,但是不支持
undefined
- 对象
对象属性一定要加双引号
""
, 并且末尾没有分号;
{
"name" : "roddy",
"age" : 25
}
- 数组
和javascript数组一样。
2. 解析与序列化
javascript中主要用
JSON
对象的.stringify()
和.parse()
方法来解析和序列化。
JSON.stringify( jsData[, filter, indent] )
- 把javascript对象序列化为JSON格式的字符串。
jsData
: 待序列化的javascript数据。filter
: 过滤器,可以是一个数组或者一个函数。
数组
: 序列化的JSON中只包含数组中拥有的属性。
函数
: 该函数接收两个参数,分别是对应的键值对key
、value
,该函数返回的值即为JSON中属性对应的值。indent
: 缩进。可以是一个数值或者一个字符串。
数值
: 缩进对应数值的空格符。
字符串
: 用对应字符串代替缩进符。
// javascript对象
var jsObject = {
name : "roddy",
age : 25
};
// 默认
console.log( JSON.stringify( jsObject ) );
// 传入数组过滤器
console.log( JSON.stringify( jsObject, [ "name" ] ) );
// 传入函数过滤器
console.log( JSON.stringify( jsObject, function( key, value ) {
if( key === "name" ) {
return "Roddy";
} else {
return value;
}
} ) );
// 传入数值缩进
console.log( JSON.stringify( jsObject, null, 4 ) );
// 传入字符串缩进
console.log( JSON.stringify( jsObject, null, "-" ) );
// 输出
// {"name":"roddy","age":25}
// {"name":"roddy"}
// {"name":"Roddy","age":25}
/**
{
"name":"roddy",
"age":25
}
**/
/**
{
-"name":"roddy",
-"age":25
}
**/
JSON.parse( jsonData[, reduction])
- 把JSON格式数据解析为javascript数据
jsonData
: 待解析的JSON数据reduction
: 还原函数,该函数接收两个参数,分别是对应的键值对key
、value
,该函数返回的值即为javascript中属性对应的值。
var jsonString = '{ "name" : "roddy", "age" : 25 }';
// 默认
console.log( JSON.parse( jsonString ) );
// 传入还原函数
console.log( JSON.parse( jsonString, function( key, value ) {
if( key === "name" ) {
return "Roddy";
} else {
return value;
}
} ) );
// 输出
// {name:"roddy",age:25}
// {name:"Roddy",age:25}
最新文章
- 如何利用Direct NFS克隆数据库
- kafka 生产者java编码
- jquery跨域请求jsonp
- 迭代输出Map和List<;Map<;String,Object>;>;的方法
- I2C协议(转)
- 解析rss和atom文件出现乱码问题
- 无线端web开发学习总结
- Week2(9月19日):增加一个CodeFirst的例子来说明
- C#入门经典(1)
- 【NOIP2013提高组】火柴排队
- MVC实例应用模式
- [MapReduce_3] MapReduce 程序运行流程解析
- Java:内省(Introspector)
- centos7入门
- Codeforces Beta Round #65 (Div. 2) C. Round Table Knights
- 浅触selinux(持续更新)
- Docker容器的原理与实践 (下)
- nginx的MainLine version、Stable version、Legacy versions
- tomcat启动报错,找不到相应的 queue,从而引发内存泄漏
- Java之引用类型分析(SoftReference/WeakReference/PhantomReference)
热门文章
- Java并发编程,深入理解ReentrantLock
- Java中的网络基础
- Java 读写文件大全
- 实现uitable cell中点击button设置当前cell为选中状态
- SpringBoot学习之启动报错【This application has no explicit mapping for /error.....】
- 【转载】究竟啥才是互联网架构&ldquo;高可用&rdquo;
- delphi中的HOOK [转贴]
- PCH in Xcode 6
- armel、armhf和arm64
- javascript if(xx)