Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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-将无效对象转换为json对象_Javascript_Json_Ajax_Object - Fatal编程技术网

JavaScript-将无效对象转换为json对象

JavaScript-将无效对象转换为json对象,javascript,json,ajax,object,Javascript,Json,Ajax,Object,我目前正在进行一个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调用,以从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>" ] }
我无法访问此对象中的数据。我希望能够像json对象一样访问数据,例如:
data[0]
。我被困在如何做到这一点

如果您的数据设置为:

var data={[“零售网站的利润值为243291美元。在2020年,我们看到了大约2.3%的增长率

”]}
那么问题是没有键的花括号。删除它们时,阵列是正确的<代码>数据[0]等于所需的字符串


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

为什么API使用无效语法响应?我很欣赏详细的响应。我是新的编码,所以我道歉,如果我的问题似乎多余。就像你提到的,我的问题是我没有钥匙。我只想要数组,但目前我被花括号卡住了。就像你提到的,我可以去掉大括号,然后使用
JSON.parse
。像
data.replace(/[{}]/g',)
这样的方法可以去除卷发吗?在我得到替换的那一刻,它不是一个函数。如果字符串在
数据中,并且可以预料到,大括号是第一个和最后一个字符,那么可以这样做来删除它们:
data.substring(1,data.length-1)
。这将返回字符串
data
减去第一个和最后一个字符。谢谢您的示例。我尝试使用
数据。如上所述,子字符串
,但我继续得到
子字符串不是函数
我尝试自己寻找解决方案,它指出子字符串只对字符串有效,因为我的字符串在对象中,子字符串还会应用吗?或者是我自己做错了什么。我试过做
.done(function(data){data.substring(1,data.length-1)
我刚注意到你的回答。对不起,这可能太晚了,但是
substring
是所有字符串的属性。在某种程度上,它是“内部”的字符串,或者确切地说,它是您可以发送给任何字符串的消息。如果另一个对象包含字符串,它将在对象的字符串部分工作。例如在:
o={a:1,b:[2,“w”]}
substring
将位于
o.b[1]
中,您可以调用
o.b[1]。substring()你不能轻易地在字符串中间调用函数。你可以用字符串插值(查找它)来做类似的事情,但我不认为这是你需要的。
$.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)
}) 
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>" ] }