JSON小结
JavaScript Object Notation
CSRF (pronounced sea-surf)
字面量(literal):字符串的意思和要表达的意思是一致的
JSON 是一种数据交换格式(因此没有指令)。可以使用Schema来校验一致性(可以有那些属性,以及取值范围 等待)
JSON的数据类型:
(1)对象:必须以"{"开始,以"}"结束
(2)数组:只能保存同样的数据类型和null。必须以"["开始,以"]"结束
(3)字符串 :必须使用双引号 包裹
(4)数字 :不需要使用双引号包裹
(5)boolean :不需要使用双引号包裹。可选的值只有true,false。区分大小写,其它的写法都不是boolean型,是普通的字符串
(6)null :不需要使用双引号包裹。只能是null。区分大小写,其它的写法都不是null,只是普通的字符串
键值对中,键 必须使用 双引号包裹。 不能使用单引号(在javascript对象中可以使用单引号,JSON中不可以)。
如果在键或值中使用双引号,必须使用转义符\。 包含双引号的键:"Hello \" world \" ."
语法约束:
(1)JSON必须以"{"开始,以"}"结束
(2)数组必须以"["开始,以"]"结束
(3)数组中的各个元素,对象中各个属性,必须使用","分隔
(4)键--值 之间必须使用":"分隔
JSON中的顶级数组:
[
1,
2
]
2017-01-24 10:31

在 JSON 中,“Object” 是什么呢? json.org 有很好的解释:
1 、An object is an unordered set of name/value pairs.
2、An object begins with { (left brace) and ends with } (right brace).
3、Each name is followed by : (colon) and the name/value pairs are separated by , (comma).
简单来说,在 JSON 中,Object 不是你认为的 bigNumber、text 之类的程序语言层面的具体类型,而是指满足上面三个条件的“字符串”。
JSON is built on two structures:
- A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
- An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.
These are universal data structures. Virtually all modern programming languages support them in one form or another. It makes sense that a data format that is interchangeable with programming languages also be based on these structures.
2、JSON 不是对象传输协议,所以对象具备的方法、读写器、事件这些与具体实现有关的特性就不应该加入协议中,否则,虽然是提高了JSON表达能力,但是却降低了通用性
3、JSON 重要原则就是简单性,所以,不会考虑楼主所说的情况的
当一个面试官问你: JSON都支持什么对象/类型?你怎么回答?
也许他的本意是下面这个答案:
JSON格式支持的数据类型有以下:
| 类型 | 描述 |
|---|---|
| Number | 在JavaScript中的双精度浮点格式 |
| String | 双引号的反斜杠转义的Unicode |
| Boolean | true 或 false |
| Array | 值的有序序列 |
| Value | 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等 |
| Object | 无序集合键值对 |
| Whitespace | 可以使用任何一对中的令牌 |
| null | empty |
但我还真不这么认为,我认为支持任意对象类型,只要是接收容器里面存在的就可以。
可以使用下面的示例来证明:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<script src="../resources/js/jquery-1.8.3.min.js"></script>
</head>
<body></body>
</html>
<script>
function ClassA(sColor) {
this.color = sColor;
this.sayColor = function() {
alert(this.color);
};
} function strToJson(str) {
var json = eval('(' + str + ')');
return json;
} jQuery.ajax({
type : "get",
cache : false,
dataType : "text",
url : "simple.json",
success : function(data) {
alert(data);
var _json = strToJson(data);
_json.testcolor.sayColor(); // 这里是我们想看的效果
},
error : function() {
alert('对不起,服务请求异常!');
}
});
</script>
simple.json文件内容:
{
"retCode": "0000",
"retMsg": "Success",
"testcolor": new ClassA("red"),
"retList": {
"le1": {
"price": "4800000",
"commId": "56761"
},
"le2": {
"price": "4800000",
"commId": "56761"
}
}
}
注意上面代码里面的 dataType : "text"
因为Jquery源码里面是用下面的方式转换的,我们需要更加原始的方式,所以我替换成了自定义的strToJson(str)
Jquery源码:
// Evaluates a script in a global context
// Workarounds based on findings by Jim Driscoll
// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
if ( data && core_rnotwhite.test( data ) ) {
// We use execScript on Internet Explorer
// We use an anonymous function so that context is window
// rather than jQuery in Firefox
( window.execScript || function( data ) {
window[ "eval" ].call( window, data );
} )( data );
}
},
其实JSON就是字符串,需要前端进行eval转换,所以不能简单的说json支持什么对象,或者支持什么数据类型。
注意提问方式,需要更加严谨提出我们想要提问的问题。
http://www.cnblogs.com/zhoulf/p/4568234.html
JSON小结的更多相关文章
- <php>json小结
1.页面中如果即用到jquery包,又用到js文件,要先写jquery包,再加载js文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...
- json小结和fastjson包的实际json操作
工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题. 一.json是什么 ...
- Package.json小结
生成package.json 定位到想放置package.json的目录,运行npm init,根据提示就可以生成package.json文件,其中test command可以为空. 安装mo ...
- JSON小结【json-lib】
javabean:Address package com.baebae.model; public class Address { private String city; private Strin ...
- angularjs webstorm 单元测试 Package.json
Package.json小结 生成package.json 定位到想放置package.json的目录,运行npm init,根据提示就可以生成package.json文件,其中test comman ...
- ajax开发框架和XMLhttpRequest、responseText、responseXml和JSON的应用
1 AJAX开发框架 2 A 初始化XMLHttpRequest对象 3 B指定响应处理函数 4 C发出HTTP请求 5 D处理服务器返回的信息 6 数据格式提要 6 优点 6 缺点 7 解析 JSO ...
- JSON的使用_检查JSON工具
json简单说就是javascript中的对象和数组. 1.对象:对象在js中表示为"{}"扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结 ...
- json —— pickle 的序列化和反序列化
前言json的序列化和反序列化 1, json 只能序列化简单的数据类型,如,列表,字典,字符串,等简单的类型,不能序列化复杂的类型. 2, json 是支持所有的语言的,多以我们跨语言的时候都是用j ...
- AjaxStudyNote
AjaxStudyNoteBy:Silvers:(E:\Video_Tutorials\Java自学视频\尚硅谷JavaEE培训\6WEB基础-Ajax)15:02 2016/2/29什么是AjaxA ...
随机推荐
- 2014 CSDN博文大赛终于获奖名单发布
博文大赛第二阶段(2014年7月15日-2014年8月10日)已经结束,决赛获奖名单已在8月11日出炉. 现将获奖名单发布: 移动开发 NO.1 罗升阳 Luoshengyang S ...
- linux脚本后台监控执行指定程序的状态(假设程序是死的重新启动程序)
#!/bin/sh while true do ps | grep "main_3g" | grep -v "grep" > /dev/null if [ ...
- 基于WEB 的认证防火墙的设计
项目要求: 1. 采用Linux iptbles作为接入防火墙,默认放行所以访问入口的80端口 2. 访问者通过http://x.x.x.x 访问防火墙的认证系统,进行账号的登陆操作,同时系统对用 ...
- java+mysql对于表情的处理
环境错误: mysql 5.0: utf8编码 jdbc:mysql-connector-java-5.1.5-bin.jar 情符的情况下报错: java.sql.SQLException: Inc ...
- Tkinter隐藏窗口再让他显示出来的例子
隐藏主要是 : withdraw()函数. 重新显示出来主要是: update()和deiconify()函数. 来源:http://www.blog.pythonlibrary.org/2012/0 ...
- Windows Server时间服务器配置方法
1 时间服务器经常会碰到客户端机器需要和服务器在时间上保持同步,否则会出现各种问题,特别是有时间相关的触发功能的时候. 为解决各设备间时间统一的问题,我们可在网络中设置一台服务器使其作为基准时间,其它 ...
- 《UNIX编程环境》的源代码的第二个版本Ubuntu下编
1.在http://www.apuebook.com下载源代码 2. 视图READ root@ubuntu:/home/wl/mywork/apue.2e# cat -n README 1 Read ...
- poj 3311 状压DP
经典TSP变形 学到:1.floyd O(n^3)处理随意两点的最短路 2.集合的位表示,我会在最后的总结出写出.注意写代码之前一定设计好位的状态.本题中,第0位到第n位分别代表第i个城市,1是已经 ...
- ssh 实体关系分析确立(ER图-实体关系图)
比較简单的方式就是依据模仿同类产品,依据同类产品的进行模仿,表单就是一个起码要加的字段,然后依据项目须要额外添加字段. 注意:实体类之间的引用关系还须要考虑性能的影响.如:单向或是双向. 表设计: 设 ...
- Deploy 11.2.0.3 RAC+DG on Windows 2008 R2 Step by Step
环境规划: 节点1: tc1 192.168.56.101 内存:2G 节点2: tc2 192.168.56.102 内存:2G 物理备库:tcdg192.168.56.108内存:1.5G 操作系 ...