【问题标题】:JavaScript - Coverting invalid object into json objectJavaScript - 将无效对象转换为 json 对象
【发布时间】:2020-06-18 00:29:53
【问题描述】:

我目前正在进行 ajax 调用以从 API 返回数据。返回值是一个数组的对象。此格式是无效对象,因此我在访问返回给我的数据时遇到问题。

如何将此对象转换为有效的 json 对象,以便访问返回的数据?

这里是一个返回数据的例子:

data = { ["<p>Retail Websites has a profit value of $243,291. In the year 2020 we have seen a growth rate of about 2.3% </p>" ] }

我尝试在我的 ajax 调用中使用dataType: json,但结果值仍然相同。

这是我使用“dataType: json”的 ajax 调用:

$.ajax({
    type: "POST",
    url: dataUrl,
    data: {
        "retailId": retailId, 
    },
    dataType: "json",
    async: true,
    error: function () {
        console.log("error")
    }
}).done(function (data) {
    console.log("retail data", data)
}) 

我无法访问此对象中的数据。我希望能够像 json 对象一样访问数据,例如:data[0]。我被困在如何做到这一点上。

【问题讨论】:

  • 为什么 API 以无效的语法响应?

标签: javascript json ajax object


【解决方案1】:

如果您的数据设置为:

var data = { ["<p>Retail Websites has a profit value of $243,291. In the year 2020 we have seen a growth rate of about 2.3% </p>" ] }

那么问题是没有键的花括号。当您删除它们时,数组是正确的。 data[0] 等于您期望的字符串。

如果您的 API 调用的结果是整个 data = {...} 并且您知道它是,那么您可以捕获字符串,删除开头和结尾不属于的字符(方括号之外的所有字符) ) 并使用 JSON.parse 获取您的 JSON 数据。有几种方法可以删除字符。如果文本总是这样,可以使用子字符串,或者如果需要更灵活,可以使用正则表达式。

【讨论】:

  • 感谢您的详细回复。我是编码新手,所以如果我的问题看起来多余,我深表歉意。就像你提到的那样,我的问题是我没有钥匙。我只想要数组,但目前我被花括号卡住了。就像您提到的那样,我可以删除花括号,然后使用JSON.parse。像data.replace(/[{}]/g, '') 这样的方法可以去除卷曲吗?目前我得到替换不是一个功能。
  • 如果您的字符串在data 中,并且您可以预见地知道花括号是第一个和最后一个字符,您可以这样做来删除它们:data.substring(1, data.length - 1)。这将返回字符串 data 减去第一个和最后一个字符。
  • 谢谢你的例子。如上所述,我尝试使用data.substring,但我继续收到substring is not a function,我尝试自己寻找解决方案,它指出子字符串仅适用于字符串,因为我的字符串在对象中,子字符串仍然适用吗?还是我自己做错了什么。我试着做.done(function (data) { data.substring(1, data.length -1)
  • 我刚刚注意到您的回复。对不起。这可能为时已晚,但substring 是所有字符串的属性。它在某种程度上是字符串的“内部”,或者准确地说,它是您可以发送到任何字符串的消息。如果另一个对象包含一个字符串,它将作用于对象的字符串部分。例如:o = {a: 1, b: [2, "w"]}substring 将在o.b[1] 中,您可以致电o.b[1].substring()。您不能轻易地在字符串中间调用函数。你可以用字符串插值做类似的事情(查一下),但我认为这不是你需要的。
猜你喜欢
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 2015-01-02
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 2017-06-16
相关资源
最近更新 更多