jquery把json字符串转化为json对象需要注意的问题(json用单引号或双引号是不同的)
1. 将json字符串转化为json对象
方案一:jquery自带的$.parseJSON函数
var jsonstr="{\"id\":\"1\",\"name\":\"jack\"}"; var obj=$.parseJSON(jsonstr);
说明:使用该方法对json字符串的要求比较高,属性名和属性值必须使用双引号,使用单引号或者不是用引号都会出错
方案二:js自带的eval函数
var jsonstr1="{\"id\":\"1\",\"name\":\"aijquery\"}"; var jsonstr1="{'id':1,'name':'aijquery'}"; var jsonstr1="{id:1,name:'aijquery'}"; //上面这三种写法,不管是用单引号包裹,还是不包裹,都能用eval来转换为json对象 var obj=eval('('+jsonstr1+')'); alert(obj.id);
说明:首先,最外层的整体字符串还有“”,其次,在使用eval转换的时候需要添加一对()使用,最后:eval最好用来转换简单的字符串,如果含有表达式,或者对象之类的复杂json串,不建议使用eval();
方案三:使用浏览器自带的JSON.parse()函数
var jsonstr1="{\"id\":1,\"name\":\"aijquery\"}"; var obj=JSON.parse(jsonstr1); console.log(obj); alert(obj.id);
2. 将属性不带有引号的字符串转换为json对象
如果存在一个字符串:G=“[{name=jack,sex=boy } , { name=julty,sex=gril }…]”,将该字符串转换为对象数组
//第一步:将 = 转换为 :,加/g的目的是为了转换整个字符串中的等号,不加/g只会转换第一个 G = G.replace(/\=/g , ":"); //第二步:去掉字符串中的所有空格 G = G.replace(/\s*/g,""); //第三步:为属性和属性值添加引号。转换为json串 G = G.replace(/\{/g, "{\""); G = G.replace(/\:/g, "\":\""); G = G.replace(/\,/g, "\",\""); G = G.replace(/\}/g, "\"}"); //第四步:去掉不合理的引号 G = G.replace(/\}","{/g, "},{"); //第五步:将该字符串转换为json数组 var arr = $.parseJSON(G);
3. 替换字符
语法:str.replace(被替换的字符串,替换为字符串)
var str = "Hello World" //使用china替换字符串中的world str = str.replace(/World/ , 'China'); //如果进行全局替换需要添加 /g , 在不添加 /g的情况下只会替换匹配到的第一个字符 str = str.replace(/World/g , 'China');
微信号:jamesworkshop 学习QQ群:364976091