您的位置:首页 > Web前端 > JavaScript

JSON使用场景和基本语法用法

2017-08-04 00:00 211 查看

你要知道

与 XML 相同之处

JSON 是纯文本

JSON 具有"自我描述性"(人类可读)

JSON 具有层级结构(值中存在值)

JSON 可通过 JavaScript 进行解析

JSON 数据可使用 AJAX 进行传输

与 XML 不同之处

没有结束标签

更短

读写的速度更快

能够使用内建的 JavaScript eval() 方法进行解析

使用数组

不使用保留字

为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

读取 XML 文档

使用 XML DOM 来循环遍历文档

读取值并存储在变量中

使用 JSON

读取 JSON 字符串

用 eval() 处理 JSON 字符串

json可以以数组传递,也可以以对象传递,,返回的json格式,是一个数组json,然后里面含有对象,这是json常见的格式。后来经过php的处理,结构又发生了变化,最外层是一个对象了,里面是数组和对象。

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str1 = '{ "name": "haorooms", "sex": "man" }';

JSON对象:

var str2 = { "name": "haorooms", "sex": "man" };

一、JSON字符串转换为JSON对象

要运用上面的str1,必须运用下面的要领先转化为JSON对象(这一点在ajax返回的时候,经常遇到!):

//由JSON字符串转换为JSON对象

var obj = eval('(' + str + ')');

或者

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

或者

var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

然后,就可以这样读取:

Alert(obj.name);

Alert(obj.sex);

特别注意:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。

例如:

var last=obj.toJSONString(); //将JSON对象转化为JSON字符

或者

var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

alert(last);

上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。

上面是对javascript的简单总结,部分总结参考网络。但是很多在平时都用的到,特别是json字符转对象的操作

使用场景

API接口返回值

Ajax中实现异步加载

2,怎样使用json

JSON的基本语法 JSON的四个基本规则:

1、并列的数据之间用逗号(",")分割。

2、映射用冒号(":")表示

3、并列的数据集合(数组)用方括号("[]")表示。

4、映射的集合(对象)用大括号("{}")表示

3,json与其他数据交换格式的区别

XML
标准通用标记语言的子集,非常适合web传输,

xml提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
Serialize
类似JSON PHP的serialize是将变量序列化,返回一个具有变量类型和结构的字符串表达式
Array()
基本数据类型,不能让用于数据传输和交替。

4,json优缺点

优点:数据格式比较简单,易于读写,压缩,占用带宽小,网络传输速度快,支持多种语言。
缺点:字符集必须是Unicode 受约束性强
语法过于严谨,必须遵循json语法四个原则。

5,JSON 数据格式和 Serialize 数据格式的异同和使用
相同点:
1、都是把其他数据类型转换成一个可以传输的字符串(除了资源类型)
2、都是结构性数据
异同点:
1、Serialize 序列化后的数据格式保存数据原有类型
2、JSON 数据格式要简洁,相比Serialize 序列化之后的数据格式
使用场景:
1、JSON 适合数据量大,不要求保留原有类型的情况
2、Serialize 适合存储带有加密方式的数据串,防止数据被中途截取,反序列化破解。

在PHP中使用serialize()序列化数据是非常便捷的。serialize()返回一个字符串,此字符串包含了表示数据的字节流。使用serialize()产生的这个字 符串可以存储于任何地方,同时不会丢失其数据类型和结构,这有利于存储或传递PHP的值。
serialize()可以处理除resource之外的任何类型,甚至可以处理那些包含了指向其自身引用的数组。数组/对象中的引用也将被存储,并且自PHP4版本以后可以同时存储对象的属性和方法(PHP3只能存储对象的属性)。
但是在使用serialize()的时候一定要注意对其内容先进行addslashes()处理,否则序列化的数据中如果有特殊字符就会导致字符串无法使用unserialize()进行反序列化。

6,php操作json的重要函数

加密:json_encode();

解密:json_deconde();

7,使用json实例详解

一维数组,多维数组,对象到json数据格式的转换,如何解析一个json数据格式

转换json数据格式到对象类型,转换json格式到数组类型(json_decode("",true))。

对象转换为json数据时,只转换公有变量,私有变量不转换。

部分摘抄: http://www.haorooms.com/post/json_object_json_string
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: