语法规则
- 数组(Arrary):方括号[]
- 对象(Object):花括号{}
- 名称/值对(name/value):组合成数组和对象,之间用冒号隔开
- 名称置于双引号之中
- 值有字符串(String)、数值(Number)、布尔值、null、对象和数组
- 字符串:需要双引号括起来;不能出现单独的双引号和右斜杠
- 并列的数据用逗号分隔
字符串转为对象
- eval() 函数参数是一个字符串,作用是直接执行JavaScript代码
<script>
var str = "console.log('hello')";
eval(str);
str='{"name":"zbx","age":20}';
var obj = eval("(" + str + ")");
console.log(obj);
</script>
- JSON.prase 可以有第二个参数,是一个函数
<script>
var str = '{"name":"zbx","age":20}';
var obj = JSON.parse(str);
console.log(obj);
function fun(name, value) {
if (name == "age") {
value = 14;
}
return value;
}
var jsonstr = JSON.parse(str, fun);
console.log(jsonstr);
</script>
对象转为字符串
- JSON.stringify(value[,replacer [, space]])
<script>
var obj={
name:"zbx",
age:20
}
console.log(obj);
var jsonstr = JSON.stringify(obj,fun);
function fun(name, value) {
if (name == "age") {
value = 14;
}
return value;
}
console.log(jsonstr);
var obj1={
a:1,
b:2,
c:3,
d:4
}
console.log(obj1);
var jsonstr1 = JSON.stringify(obj1,['c','a','b'],"\t");
console.log(jsonstr1);
</script>
Ajax和Json
- 局部更新
- xmlhttp.readystate 存有 XMLHttpRequest 的状态,有五个值
- 0:请求未初始化
- 1:服务器连接已建立
- 2: 请求已接收
- 3:请求处理中
- 4: 请求已完成,且响应已就绪
- xmlhttp.status 的值为请求结果,200 表示OK,404 表示未找到页面
<script>
var xmlhttp;
xmlhttp=CreateXHR();
xmlhttp.open("GET","test.json",true);
xmlhttp.send();
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var jsonstr=xmlhttp.responseText;
console.log(jsonstr);
var obj=JSON.parse(jsonstr);
console.log(obj);
}
}
function CreateXHR(){
if(window.XMLHttpRequest){
return = new XMLHttpRequest();
}else{
return = new ActiveXObject("Microsoft.XMLHTTP");
}
}
</script>