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中只包含数组中拥有的属性。

    函数: 该函数接收两个参数,分别是对应的键值对keyvalue,该函数返回的值即为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: 还原函数,该函数接收两个参数,分别是对应的键值对keyvalue,该函数返回的值即为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}

最新文章

  1. 如何利用Direct NFS克隆数据库
  2. kafka 生产者java编码
  3. jquery跨域请求jsonp
  4. 迭代输出Map和List<Map<String,Object>>的方法
  5. I2C协议(转)
  6. 解析rss和atom文件出现乱码问题
  7. 无线端web开发学习总结
  8. Week2(9月19日):增加一个CodeFirst的例子来说明
  9. C#入门经典(1)
  10. 【NOIP2013提高组】火柴排队
  11. MVC实例应用模式
  12. [MapReduce_3] MapReduce 程序运行流程解析
  13. Java:内省(Introspector)
  14. centos7入门
  15. Codeforces Beta Round #65 (Div. 2) C. Round Table Knights
  16. 浅触selinux(持续更新)
  17. Docker容器的原理与实践 (下)
  18. nginx的MainLine version、Stable version、Legacy versions
  19. tomcat启动报错,找不到相应的 queue,从而引发内存泄漏
  20. Java之引用类型分析(SoftReference/WeakReference/PhantomReference)

热门文章

  1. Java并发编程,深入理解ReentrantLock
  2. Java中的网络基础
  3. Java 读写文件大全
  4. 实现uitable cell中点击button设置当前cell为选中状态
  5. SpringBoot学习之启动报错【This application has no explicit mapping for /error.....】
  6. 【转载】究竟啥才是互联网架构“高可用”
  7. delphi中的HOOK [转贴]
  8. PCH in Xcode 6
  9. armel、armhf和arm64
  10. javascript if(xx)