我的JSON数据有什么问题?

时间:2016-02-11 21:52:49

标签: javascript mysql json

我正在搞乱构建一个JSON对象,所以我可以将数据库查询的结果推送到它中,然后返回填充的JSON数据。但是从get go开始遇到问题。

这是我目前的代码:

//var AppenateResString = {name:"777"};

var AppenateResString = {
  "DataSources": [{
    "Id": "TEST",
    "Rows": [
      ["10011", "10011 - Test Generic Project"]
    ],
    "NewRows": [],
    "DeletedRows": []
  }],
  "LastUpdated": ""
};

var AppenateResBody = JSON.parse(AppenateResString);
response.body = JSON.stringify(AppenateResBody);

但这是我得到的错误:

JavaScript Error: SyntaxError: invalid character 'o' looking for beginning of value
    at 
<anonymous>:21:23
--
};

var AppenateResBody = JSON.parse(AppenateResString);
                      ^ Error!

我已经将它缩小到我的JSON布局出错了。或者我是如何构建JSON对象的......或者是一些基本的,“这就是你如何做JSON”的事情。但我无法理解。

有什么想法吗?

P.S。正如你所看到的,我已经注释了我认为构建的一个非常简单的JSON对象..它失败了。

5 个答案:

答案 0 :(得分:6)

AppenateResString根本不是JSON。它是一个JavaScript对象(而不是字符串)。

JSON是一种序列化格式。如果您在JavaScript中有任何内容,那么它将表示为字符串。

答案 1 :(得分:2)

这是一个javascript对象

var AppenateResString = {
  "DataSources": [{
    "Id": "TEST",
    "Rows": [
      ["10011", "10011 - Test Generic Project"]
    ],
    "NewRows": [],
    "DeletedRows": []
  }],
  "LastUpdated": ""
};

如果你想把它作为JSON字符串那么

var str = JSON.stringify(AppenateResString);

如果您希望JSON字符串返回到javascript对象,那么

var obj = JSON.parse(str);

答案 2 :(得分:1)

你过于复杂的事情。您不需要JSON.parse该对象。它已经是您需要的格式。

    <script type="text/javascript">
var AppenateResString = {
  "DataSources": [{
    "Id": "TEST",
    "Rows": [
      ["10011", "10011 - Test Generic Project"]
    ],
    "NewRows": [],
    "DeletedRows": []
  }],
  "LastUpdated": ""
};

response.body = JSON.stringify(AppenateResString);
    </script>

答案 3 :(得分:0)

var AppenateResBody = AppenateResString;

而不是

var AppenateResBody = JSON.parse(AppenateResString);

这是一个对象

见下文:

I keep getting "Uncaught SyntaxError: Unexpected token o"

答案 4 :(得分:0)

您正在尝试对已经是对象的内容调用JSON.parse,这就是您收到错误的原因。

说明invalid character 'o' looking for beginning of value的错误消息正在发生,因为它确实试图解析单词'object'而不是实际的数据结构。