Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t使用JSON.parse返回的数据_Javascript_Json_Sails.js_Supertest - Fatal编程技术网

Javascript Can';t使用JSON.parse返回的数据

Javascript Can';t使用JSON.parse返回的数据,javascript,json,sails.js,supertest,Javascript,Json,Sails.js,Supertest,我正在尝试测试一个api(sails.js),但无法使用JSON.parse返回的数据 我有这个测试: describe('when requesting resource /coin', function () { it ('should request "/Coin" on server and return it', function (done) { supertest(sails.express.app) .get('/Coin') .expect('Conten

我正在尝试测试一个api(sails.js),但无法使用JSON.parse返回的数据

我有这个测试:

describe('when requesting resource /coin', function () {

it ('should request "/Coin" on server and return it', function (done) {
  supertest(sails.express.app)
    .get('/Coin')
    .expect('Content-Type', /json/)
    .expect(200, done)
    .end(function(err, res) {
      var result = JSON.parse(JSON.stringify(res.text));
      assert.equal(result.cash, 1000);
      done();
    })
  })
 })
在这里,您可以看到结果的样子:

未捕获类型错误:对象[

{

“用户ID”:“macario”

“现金”:1000

“createdAt”:“2014-03-04T20:17:57.483Z”

“更新日期”:“2014-03-07T02:47:51.098Z”

“身份证”:15

}

][

{

“用户ID”:“macario”

“现金”:1000

“createdAt”:“2014-03-04T20:17:57.483Z”

“更新日期”:“2014-03-07T02:47:51.098Z”

“身份证”:15

} ]

错误是:

未捕获断言错误:“未定义”==1000


我想使用这些信息,但我无法访问它们。

您在
res.text
中的响应可能是字符串

当您
stringify
字符串时,引号将被转义,从而导致这种情况

""[{\"userId\":\"macario\",\"cash\":1000,\"createdAt\":\"2014-03-
04T20:17:57.483Z\",\"updatedAt\":\"2014-03-07T02:47:51.098Z\",\"id\":15}]""
因此,当您对其调用
JSON.parse
时,它只是将其转换回字符串,而不是您想要的对象

只要换一条线

var result = JSON.parse(JSON.stringify(res.text));
对此,

var result = JSON.parse(res.text);

如果
parse
失败,则
res.text
中的JSON格式不正确,这是您的主要问题。

为什么要这样做
var result=JSON.parse(JSON.stringify(res.text))?我不知道。我在遵循一个教程,但它的重点是节点,然后我试图适应一些命令。如果有一种检索和使用数据的简单方法,那就是我所需要的。我从这个开始,它是一个非常简单的api,只是为了学习。是的,我以前已经尝试过这个,但是正如你所说的,问题在于它的格式。给出的错误是:Uncaught SyntaxError:Unexpected token[我认为这是由括号[]引起的]为了包装json,我正在尝试删除它们括号应该很好;它们代表一个数组。但是在你的问题中,我没有看到数组中的第一个元素和第二个元素之间有逗号,这会导致错误。此外,你的测试看起来不太正确——你正在执行一个返回所有硬币的
find
请求(因此是数组),但是检查
cash
值就好像只需要一个结果一样。要么检查
result[0]。cash
,要么将请求更改为
/Coin/15
(或其他已知ID),我终于找到了错误。我在返回的json中收到了双引号,我刚刚更改了。expect(200,完成)预期(200)并且成功了:D