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

Miya 发布于 2014/08/04 16:16
阅读 18K+
收藏 1
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对象该怎么定义呢?



加载中
0
小99
小99
var str = "{\"man\":[\"name\":\"xiaoming\",\"age\":\"11\"]}";
  alert(str);
0
iyangyuan
iyangyuan

根本不存在json对象这个概念,json仅仅是一个字符串规范。

在json规范中,严格规定了key必须加双引号,也就是说,{"name":"value"}才是合法的。

而我们平时在js中写的类似:var json = {name: "value"};,此写法乃是js的object定义规范,与json串非常像而已!

第一种定义方式双引号没有转义,当然不行了。

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

没必要定义这种字符串。直接用js的对象,如果要提交到后台那么jquery ajax提交时会自动把js对象转换为字符串的

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





0
我是李达康
我是李达康
json==="object"
0
last
last

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

直接去掉最外面的双引号

0
inphyy
inphyy

试试这样呢

var jsonstr = JSON.stringify(jsonobj);

0
DavidWTF
DavidWTF
用JSON.stringify()
返回顶部
顶部