深入学习js中的json
2015-12-31 22:52
681 查看
1.json是javascript对象表示法,json是存储和交换文本信息的语法,类似于XML
json比XML更小,更易解析,更快
json能够使用javascript内建的eval()函数来构建原生javascrpt对象。
下面这个例子表示创建json对象,并获取它的值
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>在javascript中创建json对象</title>
<scripttype="text/javascript">
//创建json对象,json有两种格式{}表示json对象,[]表示json数组
varjsonData={
"name":"jt",
"age":"18",
"address":"shenzheng",
"phone":"123456"
};
document.getElementById("jname").innerHTML=jsonData.name;
document.getElementById("jname").innerHTML=jsonData.age;
document.getElementById("jname").innerHTML=jsonData.address;
document.getElementById("jname").innerHTML=jsonData.phone;
</script>
</head>
<body>
<h2>在javascript中创建json对象</h2>
<p>
name:<spanid="jname"></span><br/>
age:<spanid="jage"></span><br/>
address:<spanid="jaddress"></span><br/>
phone:<spanid="jphone"></span<br/>
</p>
</body>
</html>
json的特性:
json是纯文本,json具有自我描述性(人类可读),json具有层级结构值中存在值,json可以通过javascript进行解析(使用内建的JavaScripteval()方法进行解析),json可以使用ajax进行传输。
json语法规则:
1.数据在名称/值对中
2.数据有逗号分隔
3.花括号保存对象{}
4.方括号保存数组[]
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
这很容易理解,等价于这条JavaScript语句:
json比XML更小,更易解析,更快
json能够使用javascript内建的eval()函数来构建原生javascrpt对象。
下面这个例子表示创建json对象,并获取它的值
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""
<htmlxmlns="
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>在javascript中创建json对象</title>
<scripttype="text/javascript">
//创建json对象,json有两种格式{}表示json对象,[]表示json数组
varjsonData={
"name":"jt",
"age":"18",
"address":"shenzheng",
"phone":"123456"
};
document.getElementById("jname").innerHTML=jsonData.name;
document.getElementById("jname").innerHTML=jsonData.age;
document.getElementById("jname").innerHTML=jsonData.address;
document.getElementById("jname").innerHTML=jsonData.phone;
</script>
</head>
<body>
<h2>在javascript中创建json对象</h2>
<p>
name:<spanid="jname"></span><br/>
age:<spanid="jage"></span><br/>
address:<spanid="jaddress"></span><br/>
phone:<spanid="jphone"></span<br/>
</p>
</body>
</html>
json的特性:
json是纯文本,json具有自我描述性(人类可读),json具有层级结构值中存在值,json可以通过javascript进行解析(使用内建的JavaScripteval()方法进行解析),json可以使用ajax进行传输。
json语法规则:
1.数据在名称/值对中
2.数据有逗号分隔
3.花括号保存对象{}
4.方括号保存数组[]
JSON名称/值对
JSON数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"firstName":"John"
这很容易理解,等价于这条JavaScript语句:
firstName="John"
json值可以是:
1.数字(整数或浮点数)
2.字符串(在双引号中)
3.逻辑值(true或则false)
4.数组在方括号中
5.对象在花括号中
6.null
JSON对象
json对象在花括号中书写,对象可以包含多个名称/值对
{"firstName":"John","lastName":"Doe"}
这一点也容易理解,与这条JavaScript语句等价:
[code]firstName="John"
lastName="Doe"
JSON数组
json数组在方括号中书写,
{
"employees":[
{"firstName":"John","lastName":"Doe"},
{"firstName":"Anna","lastName":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
]
}
在上面的例子中emploees数组中包含3个对象,每个对象代表一条关于某人(有姓和名)的记录。
JSON使用JavaScript语法
因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON。
通过JavaScript,您可以创建一个对象数组,并像这样进行赋值:
varemployees=[
{"firstName":"Bill","lastName":"Gates"},
{"firstName":"George","lastName":"Bush"},
{"firstName":"Thomas","lastName":"Carter"}
];
可以像这样访问JavaScript对象数组中的第一项:
[code]employees[0].lastName;
返回的内容是: [code]Gates
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>通过json对象来创建对象</title>
</head>
<body>
<p>
aaa<spanid="nameAndAge"></span>
</p>
<scripttype="text/javascript">
varemployees=[
{"name":"jt1","age":"18"},
{"name":"jt2","age":"19"},
{"name":"jt3","age":"20"}
];
alert(employees[0].age);
employees[0].age=30;
alert(employees[0].age);
document.getElementById("nameAndAge").innerHTML=11;
</script>
</body>
</html>JSON解析器
提示:eval()函数可编译并执行任何JavaScript代码。这隐藏了一个潜在的安全问题。使用JSON解析器将JSON转换为JavaScript对象是更安全的做法。JSON解析器只能识别JSON文本,而不会编译脚本。
在浏览器中,这提供了原生的JSON支持,而且JSON解析器的速度更快。
较新的浏览器和最新的ECMAScript(JavaScript)标准中均包含了原生的对JSON的支持。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>通过浏览器自带的json解析器解析json字符串</title>
</head>
<body>
<p>
name:<spanid="name"></span><br/>
age:<spanid="age"></span>
</p>
<scripttype="text/jscript">
vartxt='{"employees":['+
'{"name":"jt1","age":"18"},'+
'{"name":"jt2","age":"20"},'+
'{"name":"jt3","age":"30"}]}';
varobj=JSON.parse(txt);
varname=document.getElementById("name").innerHTML=obj.employees[0].name+"";
document.getElementById("age").innerHTML=obj.employees[1].age;
</script>
</body>
</html>
相关文章推荐
- Nancy 自定义JsonSerializer
- json使用感悟
- js json与字符串转换
- 深入理解Javascript单线程
- JavaScript 中的 replace 方法
- [LeetCode][JavaScript]Symmetric Tree
- javascript常用的正则表达式
- javascript开发HTML5游戏--斗地主(单机模式part1)
- 使用Maven创建Web项目,无法识别内置JSP内置对象
- js获取当前页面的url网址信息
- Javascript验证手机号码正则表达式
- js日期比较
- [LeetCode][JavaScript]Balanced Binary Tree
- JSON详解
- js滚动页面加载内容
- ES与Javscript,JScript,ActionScript等脚本
- JSP基础详解
- js常用正则表达式
- JSP_EXTENDS
- js查询checkbox已选择的值