JavaScript字符串数组转换为对象数组

4

我将字符串数组从服务器发送:

Node.JS + Express.JS

app.get('/url', function (req, res) {
    res.send(["item1", "item2", "item3"]);
})

但是在前端我收到的是对象数组:

Angular.JS

SomeResource.query(function (data) {
    console.log(data);
});

在控制台中

0: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "1"
$$hashKey: "008"
__proto__: Resource
1: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "2"
$$hashKey: "009"
__proto__: Resource
2: Resource
0: "i"
1: "t"
2: "e"
3: "m"
4: "3"
$$hashKey: "00A"
__proto__: Resource

为什么会发生这种情况?我如何在前端接收相同的数组? 谢谢。

这可能是Angular的问题。如果您使用浏览器访问URL,则会获取JSON数组。对吧? - Hector Correa
正确:字符串数组 - user3162402
1个回答

1

很遗憾,这是因为MIME不支持JavaScript数组类型数据。

MIME标准定义的内容类型在电子邮件之外也很重要,例如在像万维网的通信协议HTTP中。HTTP要求数据在类似电子邮件的消息上下文中传输,尽管这些数据通常实际上并不是电子邮件。

使用JSON。

您可以在浏览器调试器控制台(如Firebug)或节点控制台上进行确认。

var json = JSON.stringify(["item1", "item2", "item3"]);
->undefined

JSON.parse(json);
->["item1", "item2", "item3"]

所以,在服务器端。
app.get('/url', function (req, res) {
    res.send(JSON.stringify(["item1", "item2", "item3"]));
})

并在客户端使用JSON.parse解析数据以获取数组。


不幸的是,它没有起作用。我更新了服务器和客户端。现在控制台上出现错误:SyntaxError: Unexpected token o。它指向代码中的 JSON.parse 位置。此外,从服务器返回的数组在我对其进行字符串化后看起来仍然相同。 - user3162402
你可能很清楚地知道,你可以从服务器向客户端发送“一些字符串”。我们在这里讨论的只是从服务器向客户端发送“JSON.stringify字符串”。我们知道如何将数组转换为JSON字符串= JSON.stringify,将字符串转换为数组= JSON.parse。也许,你还需要使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent,因为它包含双引号。 - user1028880
请查看此链接:https://dev59.com/gmw15IYBdhLWcg3wIoRM - user1028880
谢谢。但是$resource服务期望一个可以反序列化为数组的响应,却收到了一个对象,或者反之亦然。所以现在Angular抛出错误,无法解析响应。 - user3162402
我猜这是一个Angular.JS错误。在这里,我提供了从服务器向客户端发送JSON数组的所有因素,但由于我不使用Angular.JS,无法帮助其余部分。 - user1028880

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接