开发者社区> 问答> 正文

js怎样定义一个字符串类型的json对象?报错

var jsonStr="{ "man" : [ {"age" : "23", "name" : "小明"}, {"age" : "25", "name" : "小刚"}         ], "woman" : [ {"age" : "26", "name" : "小红"}, {"age" : "27", "name" : "小丽"}         ] }";

这样子的话,

$(function(){
        console.log(jsonStr);
    };



chrom一直报错,错误信息: Uncaught SyntaxError: Unexpected token ILLEGAL

以为是单双引号嵌套的问题,所以改成了这样

var jsonStr="{
        'man' : [
            {'age' : '23', 'name' : '小明'},
            {'age' : '25', 'name' : '小刚'}
        ],
        'woman' : [
            {'age' : '26', 'name' : '小红'},
            {'age' : '27', 'name' : '小丽'}
        ]
    }";



还是报同样的错,json对象外围不加引号的话,默认是json对象,
那么要定义一个字符串类型的json对象该怎么定义呢?



展开
收起
爱吃鱼的程序员 2020-06-15 19:27:18 787 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    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":"小丽"}]};





    json==="object"

    <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()

    2020-06-15 19:27:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载