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的一些要点总结 专题的更多相关文章
- JSON资料汇总
网络入门学习资料 1.W3School的JSON教程:http://www.w3school.com.cn/json/index.asp 2.Introducing JSON[介绍JSON]:http ...
- springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...
- Java程序员需要突破的技术要点
一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...
- 高手教您编写简单的JSON解析器
编写JSON解析器是熟悉解析技术的最简单方法之一.格式非常简单.它是递归定义的,所以与解析Brainfuck相比,你会遇到轻微的挑战 ; 你可能已经使用JSON.除了最后一点之外,解析 Scheme的 ...
- jQuery-实现简单的Ajax请求封装
封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...
- Json解析要点
解析Json时,昨天遇到了新的问题,之前都是解析的数组,不是数组的用类来做. 这是Json串; {"status":"00001","ver" ...
- fushioncharts 使用教程要点---使用JSON数据方式
1.建立图表步骤: A.下载fushionChart,引入FusionCharts.js和FusionChartsExportComponent.js文件 B.建立图表对象 var chart1 = ...
- JavaScript要点 (四)JSON
JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 . 什么是 JSON? JSON 英文全称 JavaScript Object Notation JSON 是一种轻量级 ...
随机推荐
- 【u118】日志分析
Time Limit: 1 second Memory Limit: 128 MB [问题描述] M 海运公司最近要对旗下仓库的货物进出情况进行统计.目前他们所拥有的唯一记录就是一个记录集装箱进出情况 ...
- [Recompose] Lock Props using Recompose -- withProps
Learn how to use the ‘withProps’ higher order component to pre-fill a prop, unable to be overridden. ...
- js进阶 11-20 弹出层如何制作
js进阶 11-20 弹出层如何制作 一.总结 一句话总结:其实就是一个div,控制显示和隐藏即可.设置成绝对定位更好,就可以控制弹出层出现的位置.关闭的画质需要将display重新设置为none就好 ...
- [Angular] Subscribing to router events
In our root component, one thing we can do is subscribe to Router events, and do something related t ...
- [Win 8/WP 8]简单实现弹出页更换头像的功能
在Win 8应用里,对弹出页(Popup)的灵活操作必不可少,下面我们就来简单实现一个. 一.先让Popup弹出到指定位置 先来看看效果图,如图[1]: 下面是前端代码,代码段[1]: <Gri ...
- PatentTips - Fast awake from low power mode
BACKGROUND Electronic devices, such as electronic book readers ("eBook reader devices"), c ...
- Android注冊短信验证码功能
一.短信验证的效果是通过使用聚合数据的SDK实现的 ,效果例如以下: 二.依据前一段时间的博客中输了怎么注冊! 注冊之后找到个人中心找到申请一个应用就可以! 三.依据官方文档创建项目 官方文档API下 ...
- hdu 4644 BWT (kmp)
看完题目你非常easy想到,这个题目的关键点就是怎样把给出的数组还原成原数组. 还原的原数组之后无论是AC自己主动机 还是 kmp都能够解决 - -尽管我认为kmp会超时的感觉. 那么怎样还原这个字符 ...
- 【codeforces 779D】String Game
[题目链接]:http://codeforces.com/contest/779/problem/D [题意] 给你一段操作序列; 按顺序依次删掉字符串1中相应位置的字符; 问你最多能按顺序删掉多少个 ...
- 【noip模拟】连环
[题目描述] 惠子说:“连环可解也”. 这说明他是一个破解机关的高手,连连环都能解开,鲁班锁什么的自然不在话下.一位鲁班的后人非常不服气,于是找到惠子,给他出了一道题. 他首先给了惠子一个长度为 n的 ...