var jsonStr="{ "man" : [ {"age" : "23", "name" : "小明"}, {"age" : "25", "name" : "小刚"} ], "woman" : [ {"age" : "26", "name" : "小红"}, {"age" : "27", "name" : "小丽"} ] }";
这样子的话,
$(function(){ console.log(jsonStr); };
以为是单双引号嵌套的问题,所以改成了这样
var jsonStr="{ 'man' : [ {'age' : '23', 'name' : '小明'}, {'age' : '25', 'name' : '小刚'} ], 'woman' : [ {'age' : '26', 'name' : '小红'}, {'age' : '27', 'name' : '小丽'} ] }";
varstr="{"man":["name":"xiaoming","age":"11"]}";
alert(str);
根本不存在json对象这个概念,<spanstyle="line-height:1.5;font-size:10pt;">json仅仅是一个字符串规范。
<spanstyle="line-height:1.5;font-size:10pt;">在json规范中,严格规定了key必须加双引号,也就是说,{"name":"value"}才是合法的。
<spanstyle="line-height:1.5;font-size:10pt;">而我们平时在js中写的类似:varjson={name:"value"};,此写法乃是js的object定义规范,与json串非常像而已!
<spanstyle="line-height:1.5;font-size:10pt;">第一种定义方式双引号没有转义,当然不行了。
<preclass="brush:js;toolbar:true;auto-links:false;">varstr='{"man":[{"age":"23","name":"小明"},{"age":"25","name":"小刚"}],"woman":[{"age":"26","name":"小红"},{"age":"27","name":"小丽"}]}';没必要定义这种字符串。直接用js的对象,如果要提交到后台那么jqueryajax提交时会自动把js对象转换为字符串的
<preclass="brush:js;toolbar:true;auto-links:false;">varobj={"man":[{"age":"23","name":"小明"},{"age":"25","name":"小刚"}],"woman":[{"age":"26","name":"小红"},{"age":"27","name":"小丽"}]};<spanstyle="color:#0080FF;font-family:Consolas,'LucidaConsole',monospace;font-size:12px;line-height:normal;background-color:#FFFFFF;">varjsonStr={'man':[{'age':'23','name':'小明'},{'age':'25','name':'小刚'}],'woman':[{'age':'26','name':'小红'},{'age':'27','name':'小丽'}]};
<spanstyle="color:#0080FF;font-family:Consolas,'LucidaConsole',monospace;font-size:12px;line-height:normal;background-color:#FFFFFF;">直接去掉最外面的双引号
试试这样呢
varjsonstr=JSON.stringify(jsonobj);
用JSON.stringify()版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。