现在的位置: 首页 > 综合 > 正文

JSON_前台操作

2017年12月27日 ⁄ 综合 ⁄ 共 2920字 ⁄ 字号 评论关闭
文章目录

json:

链接:http://tiankonguse.com/record/record.php?id=302

链接:http://www.cnblogs.com/linda586586/archive/2012/04/17/2454212.html  

链接:http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html

一、JSON值可以是:

l  数字(整数或浮点数)

l  字符串(两边都在双引号中,必须是双引号,不能是单引号)

l  逻辑值(true 或 false)

l  数组(在方括号中)

l  对象(在花括号中)

l  null

要注意,我们写对象的时候一般可以{name:'xskow'},即属性名可以不用双引号括起来但JSON有非常严格的语法,如果属性是字符串,那必须用双引号括起来。如{ "prop": "val" } 是个合法的JSON,但{ prop:"val" }和{ 'prop': 'val' }确实不合法的。

二、json字符串与JSON对象:

JSON对象:

var json={"name1":"aaa","name2":"bbb"};  //JSON对象
var json={"option":[{"name":"aaa"},{"name":"bbb"}]};  //JSON对象数组

json字符串:

//json字符串,是指该字符串变量的值与json的格式相同,但它不是对象,只是一个字符串。
var jsonVal='{"option":[{"name":"aaa"},{"name":"bbb"}]}';//json字符串

三、json字符串与JSON对象转换:

1.使用eval()函数:将json字符串转成JSON对象

var obj = eval('(' + JSONTest + ')');//console.dir(obj),typeof(obj)

eval函数非常快速,它可以编译执行任何JavaScript程序,因此产生了安全性问题。eval函数可能会执行恶意的脚本。当使用可信任与完善的源代码时才可以使用eval函数,这样可以更安全的解析JSON文本。使用XmlHttp的web应用,页面之间的通讯只允许同源,因此是可以信任的,但这却不是完善的。如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效json文本。

2.使用JSON.parse()函数:将json字符串转成JSON对象

使用JSON.stingify()函数:将JSON对象转成json字符串

var a={"name":"tom","sex":"男","age":"24"};//json对象
var b='{"name":"Mike","sex":"女","age":"29"}';//json字符串
var aToStr=JSON.stringify(a);
var bToObj=JSON.parse(b);
alert(typeof(aToStr));  //string
alert(typeof(bToObj));//object

注:ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

四、JSON:前台与后台的数据交互

$.ajax获取的返回值是json字符串,

$.getJSON获取的返回值是JSON对象。

$.getJSON(url, function(json){  //数据格式:[{id:xx,name:xx},{id:xx,name:xx}]
	var comboData= [{value: "",text: ""}];
	for(var j=0;j<json.length;j++){//遍历JSON数据(数组型的JSON)
		var temp={text:json[j].name, value:json[j].id};
		comboData.push(temp);
	}
	child.addOption(comboData);
});

五、JSON遍历:

链接:http://blog.goodcmd.com/v1948.htm

情形一:JSON数组(通过数组的length属性进行遍历)

//方式1:
var json={"option":[{"name":"aaa"},{"name":"bbb"}]};
for(var i=0;i<json.option.length;i++){
	alert(json.option[i].name);
}

//方式2:
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
var json =[{"text":"AA","value":"aa"},{"text":"BB","value":"bb"},{"text":"CC","value":"cc"}]; 
$(json).each(function(){ 
    alert(this.text+" "+this.value); 
}); 
</script>	

情形二:JSON对象(通过for/in循环进行遍历)

for/in循环-链接:

http://blog.csdn.net/wzmmao/article/details/17306073

var json={"name1":"aaa","name2":"bbb"};
for(var i in json){
//  alert(i)
    alert(i + " : " + json[i]);
}

六、数组与对象(js,JSON

链接:http://asyty.iteye.com/blog/1260933

js对象:里面装了许多的key-value对,类似于java里Map<String,Object>;

js数组对象:数组是有序的,不是采用key的方式获取值,而是通过index来索引,相对对象来说还多了length属性。

当然 对象和数组是可以混用的:

var array=["hello", 12, true , {"name": "xiaoming",  "age" : 4}];    
var boy= {"name":"xiaoming", "brothers":["xiaohuang","xiaohong"]};  

看一个有点特殊的例子:

var a = [1,2,3]; //定义一个数组  
console.log(a.length); //结果为3  
  
a["name"] = "xiaoming"; //我们再给它赋值(其实是加多了一个属性,而不是往数组里面加多元素值)  
console.log(a.length); //结果还是为3 
  
a.push(4);  
console.log(a.length); //结果为4
console.dir(a)//数组a多了一个name属性,值为"xiaoming"

抱歉!评论已关闭.