JSON:JS解析外部JSON文件(我可以删除引号吗?)

时间:2011-12-04 13:06:48

标签: javascript json parsing

{
    name: "Tesla",
    gender: "Male",
    info: {age: 88, interest: "Science"},
    x: 
    [
        {y: 1},{y: 2}

    ]

}

我用

var jsonData = eval("("+xmlhttp.responseText+")");

这可以在属性周围解析没有" "的JSON文件。

JSON.parse(xmlhttp.responseText)

{
    "name": "Tesla",
    "gender": "Male",
    "info": {"age": 88, "interest": "Science"},
    "x": 
    [
        {"y": 1},{"y": 2}

    ]

}

JSON属性必须由" "包围。 有没有办法在没有" "的情况下这样做?

4 个答案:

答案 0 :(得分:4)

不,没有办法解决它。

没有引用属性,它是无效的JSON。您的第一个示例是JavaScript对象文字。

答案 1 :(得分:2)

通过不在属性周围引用您的JSON不再有效。这样做只会导致问题。

答案 2 :(得分:2)

JSON是一种数据格式,表示为JavaScript的子集

JSON规范要求将属性名称表示为字符串(必须引用)。 JavaScript对象文字语法还提供了使用标识符的选项。

eval可以将您的属性名称作为标识符处理,因为JavaScript中允许使用该语法,eval将代码评估为JavaScript。另一方面,JSON.parse期望真正的JSON,这是你必须给它的。

引号是必需的,请保留它们。

答案 3 :(得分:1)

eval是邪恶的。检查this以获取阅读。但是,您使用的是JSON.parse,需要更新版本的浏览器或json2.js脚本。

但在我的偏好中,我喜欢使用jQuery如何使用new Function()将JSON反序列化为对象。请考虑以下代码:

var jsonData = new Function('return ' + xmlhttp.responseText)();

这可以使用和不使用“”:)