Javascript 解析json字符串时出错

Javascript 解析json字符串时出错,javascript,json,Javascript,Json,我试图解析这个简单的json字符串: var dataJSON = {}; var data; dataJSON = { "status": "OK", "messages" : [{ "user" : { "id" : "4", "status" : "offline",

我试图解析这个简单的json字符串:

var dataJSON = {};
    var data;

            dataJSON = {
            "status": "OK", 
            "messages" : [{
                "user" : {
                    "id" : "4",
                    "status" : "offline",
                    "name" : "dummy",
                    "pictures" : ["pic.jpg"]
                },
                "message" : "Hey",
                "timestamp" : 1395660658
            }, {
                "user" : {
                    "id" : "2",
                    "status" : "online",
                    "name" : "dummy1",
                    "pictures" : ["pic1.jpg"]
                },
                "message" : "hello",
                "timestamp" : 1395660658
            }]
        };

        console.log('test');
        console.log(dataJSON);

        //parse data
        data = JSON.parse(dataJSON);
但我得到了以下错误:

“无法分析json字符串”


我不知道为什么,干杯

您根本不需要解析它;它已经是一个JavaScript对象了

首字母缩写“JSON”代表JavaScript对象表示法。它是JavaScript中用于“动态”创建对象的本机语法的一种受限形式。换句话说,JavaScript的原生对象文字语法是JSON的超集。您在其中键入的“dataJSON”变量的值是一个JavaScript对象文本表达式。此类表达式的值是对对象的引用。无需解析,因为JavaScript解析器本身已经完成了解析

编辑-如果您确实需要一个JSON字符串进行测试,那么我认为最简单的方法是使用
JSON.stringify()
将对象转换为字符串,然后将其传递到测试代码中。在您的示例中,这看起来像:

    dataJSON = JSON.stringify({
        "status": "OK", 
        "messages" : [{
            "user" : {
                "id" : "4",
                "status" : "offline",
                "name" : "dummy",
                "pictures" : ["pic.jpg"]
            },
            "message" : "Hey",
            "timestamp" : 1395660658
        }, {
            "user" : {
                "id" : "2",
                "status" : "online",
                "name" : "dummy1",
                "pictures" : ["pic1.jpg"]
            },
            "message" : "hello",
            "timestamp" : 1395660658
        }]
    });

由于“quote-quoting”麻烦,这比手工构造字符串要简单一些。当然,您传入的对象应该是一个实际上可以表示为JSON的对象,但是您上面的示例绝对可以。

这甚至不是JSON字符串。@user:JSON是用于在环境之间传输数据的文本表示法。您在这里需要什么JSON?如果数据只在程序中使用,那么您可以使用符号来创建适合于编程语言的数据结构,在本例中是JavaScript。Derek它传递一个JSON验证器cookie monster-我需要它作为单元testing@user3754111请参阅我的答案更新。对于新手的问题,很抱歉,那么为什么说我调用了一个API,它响应这个字符串,我就必须解析它?@user3754111,因为那是完全不同的情况。如果您与服务器通信,而它以字符串响应,则必须对其进行解析。这才是JSON的真正意义所在——它用于在线数据。如果您只是在代码中直接声明一个对象,那么就不需要JSON解析,只需要JavaScript。@user3754111如果您需要使用JSON字符串进行单元测试,那么我将在答案中添加一些内容。“因为那是完全不同的情况。如果您与服务器通信,而它以字符串响应,则必须对其进行解析。这才是JSON的真正意义所在——它用于在线数据。如果您只是直接在代码中声明一个对象,“-因此,如果我编写json字符串并将其放在一个简单的字符串变量中,这是否意味着我可以解析它?@user3754111是-就像我在更新答案时所写的那样,键入json字符串可能会有点痛苦,因为您遇到了必须在带引号的字符串中包含引号的问题。”。这就是为什么我建议创建一个普通JavaScript对象,并使用
JSON.stringify()
将其转换为一个字符串,然后用于测试。这只是一个建议。