1,前言
因为需要做个小东西,用到这个东西,所以那过来看看,做了一个初步的学习笔记,供以后自己查看。并不是很全面深入,待以后随时补充。
这个是我从写好的文档复制过来的,不知道为什么有些字体不一样。
2,学习备忘
2.1,JSON数据交换使用,非常适合JS。
2.2,用逗号分割数据,用[]保存数组,用{}保存对象。
2.3,书写格式:
名称:值
同时用””包含,”name”:”marvin”
数字值不加。
2.4,数组里面可以有多个对象,对象里面可以有数组
例子:
{
"employees":[
{"firstName":"John" , "lastName":"Doe"},
{"firstName":"Anna" , "lastName":"Smith"},
{"firstName":"Peter" , "lastName":"Jones"}
]
}
引用: employees[0].lastName;
返回内容:Gates
可以修改:employees[0].lastName=”jobs”
注意:1,用的时候双引号是英文半角,中文是无法识别
2, JSON文件的文件类型是".json"
3, JSON文本的MIME类型是"application/json"
4, JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。
说明一点:关于JS单引号双引号问题,在JS里面是一个意思,但是如果要引号嵌套或者输出,需要结合使用,比如要输出‘你好!’就要写document.write("'你好!'"),反之亦然;在SHELL里面,引号是含义不同的,详细可以看我博客里面的关于SHELL引号的介绍;
举个引号的例子:
vartxt = '{ "employees" : [' +
'{"firstName":"Bill" , "lastName":"Gates"},' +
'{"firstName":"George" , "lastName":"Bush"},' +
'{"firstName":"Thomas" , "lastName":"Carter"} ]}';
怎么用呢:varobj=eval ("(" + txt +")");
说明: 上面的txt看懂了没?引号匹配是不是有点奇怪,我开始时候发现这个不匹配么,所以改了,结果报错,查看一下eval()函数说明,里面参数是字符串,懂了,其实很简单,上面是三个字符串连接而已,只不过凑成了json格式,蛋疼吧。
我们把上面所有单引号换成双引号,试试看?结果如何,没有输出了吧,换成单引号?不对吧。呵呵,对于JS来说,引号嵌套要换种形式,所以下面这样也是对的:
vartxt="{ 'employees' : [" + "{'firstName':'Bill','lastName':'Gates' }," + "{'firstName':'George','lastName':'Bush' }," +"{'firstName':'Thomas','lastName':'Carter' } ]}";
虽然是小问题,但是有时候会出奇怪的错误。
至于为什么使用时候非要加上(),这个因为json是以{}标记开始结束,JS会以为是一个语句块,加上()强制使JS认为是表达式才能处理这个字符串。
其实实际中推荐使用函数
varjson='{"name":"CJ","age":18}';
data=(new Function("","return "+json))();
这样就可以了。
因为:eval()函数可编译并执行任何JavaScript代码。一个潜在的安全问题。
3,后续
继续学习。