JSON简介
2016-06-15 16:40
260 查看
1、JSON是一种数据格式,不支持变量、函数和对象实例,可以表示以下三种类型的值:
简单值:使用与Javascript相同的语法,可以在JSON中表示字符串、数值、布尔值、和null,不支持undefine。
对 象:表示一组无序的键值对,每个键值对中的值可以是简单值,也可以是复杂数据类型的值。
数 组:表示一组有序的键值列表,可以通过数值索引来访问其中的值,数组的值也可以是任意类型——简单值、对象和数组。
2、简单值:
eg:5
这是JSON表示数值5的方式,类似地,字符串表示:"Hello world!"。Javascript字符串与JSON字符串最大的区别在于,JSON字符串必须使用双引号(单引号会导致语法错误),布尔值和null也是有效的JSON的形式。
3、对象:
JSON中的对象与Javascript有点不同。javascript中如下:
var person = {
name: "Nicholas",
age: 29
};
实际上,javascript中完全可以这样写:
var person = {
"name": "Nicholas",
"age": 29
};
JSON表示上述对象方式如下:
{
"name": "Nicholas",
"age": 29
} //与javascript相比,末尾没有分号,没有声明变量(JSON中没有变量的概念)。并且JSON中对象的属性名任何时候都必须加双引号
也可以在对象中嵌入对象:
{
"name": "Nicholas",
"age": 29,
"school": {
"name": "collegeName",
"location":
"locationName"
}
}
虽有有两个name,但同属于不同的对象,因此这样没问题。不过同一对象中绝对不应该出现两个同名属性。
4、数组:
Javascript中数组字面量如下:
var value = [25, "hi", true];
在JSON中同样的语法如下:[25, "hi", true],结尾也没有分号。
5、解析与序列化:
早期的JSON解析器基本上使用Javascript的eval()函数,可以解析、解释并返回Javascript对象和数组。ECMAscript5对解析JSON行为进行了规
范,定义了全局对象JSON。在旧版本浏览器中,使用eval()对JSON数据结构求值存在风险,因为可能会执行一些恶意代码。
JSON对象有两个方法:stringify()和parse()。在简单的情况下,这两个方法分别用于把javascript对象序列化为JSON字符串和把JSON字符串解
析为原生的javascript值。有时候JSON.stringify()不能满足对某些对象进行自定义序列化的需求,在这种情况下可以给对象定义toJSON()方法,
返回其自身的JSON格式。
参考自《JavaScript高级程序设计》
简单值:使用与Javascript相同的语法,可以在JSON中表示字符串、数值、布尔值、和null,不支持undefine。
对 象:表示一组无序的键值对,每个键值对中的值可以是简单值,也可以是复杂数据类型的值。
数 组:表示一组有序的键值列表,可以通过数值索引来访问其中的值,数组的值也可以是任意类型——简单值、对象和数组。
2、简单值:
eg:5
这是JSON表示数值5的方式,类似地,字符串表示:"Hello world!"。Javascript字符串与JSON字符串最大的区别在于,JSON字符串必须使用双引号(单引号会导致语法错误),布尔值和null也是有效的JSON的形式。
3、对象:
JSON中的对象与Javascript有点不同。javascript中如下:
var person = {
name: "Nicholas",
age: 29
};
实际上,javascript中完全可以这样写:
var person = {
"name": "Nicholas",
"age": 29
};
JSON表示上述对象方式如下:
{
"name": "Nicholas",
"age": 29
} //与javascript相比,末尾没有分号,没有声明变量(JSON中没有变量的概念)。并且JSON中对象的属性名任何时候都必须加双引号
也可以在对象中嵌入对象:
{
"name": "Nicholas",
"age": 29,
"school": {
"name": "collegeName",
"location":
"locationName"
}
}
虽有有两个name,但同属于不同的对象,因此这样没问题。不过同一对象中绝对不应该出现两个同名属性。
4、数组:
Javascript中数组字面量如下:
var value = [25, "hi", true];
在JSON中同样的语法如下:[25, "hi", true],结尾也没有分号。
5、解析与序列化:
早期的JSON解析器基本上使用Javascript的eval()函数,可以解析、解释并返回Javascript对象和数组。ECMAscript5对解析JSON行为进行了规
范,定义了全局对象JSON。在旧版本浏览器中,使用eval()对JSON数据结构求值存在风险,因为可能会执行一些恶意代码。
JSON对象有两个方法:stringify()和parse()。在简单的情况下,这两个方法分别用于把javascript对象序列化为JSON字符串和把JSON字符串解
析为原生的javascript值。有时候JSON.stringify()不能满足对某些对象进行自定义序列化的需求,在这种情况下可以给对象定义toJSON()方法,
返回其自身的JSON格式。
参考自《JavaScript高级程序设计》
相关文章推荐
- 使用 Python 处理 JSON 格式的数据
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C# JSON格式化转换辅助类 ConvertJson
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法
- php解析json数据实例
- PHP中JSON的应用技巧
- PHP6 先修班 JSON实例代码
- 关于JSON以及JSON在PHP中的应用技巧
- .Net中的json操作类用法分析