【问题标题】:How to tell JavaScript that my variable is an array and not a string?如何告诉 JavaScript 我的变量是数组而不是字符串?
【发布时间】:2020-01-02 06:19:30
【问题描述】:

我正在使用烧瓶,我的后端以 python 列表的形式向 AJAX 返回响应,然后 JavaScript 将其理解为字符串,但这是一个问题,因为我必须遍历该列表。

我在互联网上只能找到如何检查变量的类型,但找不到任何方法(在 python 中非常简单)来更改它

【问题讨论】:

  • 试试JSON.parse
  • Array.isArray() 检查 array..typeof 关键字以了解变量的类型
  • 但是变量是一个字符串@ShivendraGupta - 所以Array.isArraytypeof 分别返回false"string"
  • 大多数情况下,HTTP 响应都像字符串一样出现。所以你可以做两件事。首先,您必须检查数据是否为字符串类型?如果是这样,将它们转换为对象。 typeof response === 'string' 然后JSON.parse( response )

标签: javascript ajax flask


【解决方案1】:

Array.isArray() 方法判断传入的值是否为数组。

var someNumbers = [1,2,3];
console.log( Array.isArray( someNumbers ) );

如果它是一个数组,它将返回

true

查看此链接以了解有关Array.isArray的更多信息

【讨论】:

  • 这不是被问到的问题; OP 知道 JavaScript 正在处理一个字符串,但他/她想强制他的 JavaScript 理解它实际上是一个数组。
【解决方案2】:

如果你的响应是一个字符串,你可以使用JSON.parse把它变成一个JS对象/数组。

var response = someAjaxStuff(...);
// response is a string
response = JSON.parse(response);
// now reponse is an Object/Array

如果你使用 AJAX 和 jQuery,你也可以使用dataType:

$.ajax({
    url: 'https://example.com/api/somejson',
    dataType: 'json',
    method: 'get',
    success: function(res) {
        // console.log res will be an object/array here.
    }

});

但是如果你正在编写自己的 API,我建议你必须添加正确的标头来告诉浏览器它是 JSON 格式而不是字符串。

对于烧瓶,您可以使用jsonify (reference):

return jsonify(somedict)

【讨论】:

  • 我正在尝试您提供的第一个选项,但我收到控制台错误:“Uncaught SyntaxError: Unexpected token u in JSON at position 2”
  • 也许您的字符串不是有效的 JSON。您可以验证您的字符串here
  • 我的字符串其实是一个python列表[[a,b,c],[d,e,f],...]
  • 如果这不是 JSON,JS 就不可能读取该字符串(除非您为此编写解析器)。确保您的 API 可以响应有效的 JSON。
猜你喜欢
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2013-12-19
  • 2022-08-16
  • 2021-10-27
相关资源
最近更新 更多