我如何从字符串中提取axios数据?



这是来自服务器的响应数据

[{"username": "harry"}][{"id": 1, "name": "playlist1", "tag": "genre"}, {"id": 2, "name": "playlist1", "tag": "genre"}, {"id": 3, "name": "playlist3", "tag": "genre"}][{"1": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}, {"2": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af", "https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}, {"3": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af", "https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}]
对于axios,数据以上述格式的字符串形式出现。上面的字符串中有三个数组,我想分别提取每个数组并将其存储在一个变量中。

不能转换为JSON。如何获取用户名的数据和第二个数组的数据?我试图通过索引访问它,但由于它是字符串格式,它是一个接一个字母

访问的。

你应该得到响应固定的建议@某些性能和@ambianbeing,但如果你不能,仍然想从这个字符串响应提取数据你可以这样做

const axiosResponse = `[{"username": "harry"}][{"id": 1, "name": "playlist1", "tag": "genre"}, {"id": 2, "name": "playlist1", "tag": "genre"}, {"id": 3, "name": "playlist3", "tag": "genre"}][{"1": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}, {"2": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af", "https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}, {"3": ["https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af", "https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", "https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"]}]`;
const result = JSON.stringify(
JSON.parse('{ "data": [' + axiosResponse.split('][').join('],[') + ']}').data[1]
);
console.log(result);

您发布的响应不是字符串。它看起来是三个数组,每个数组包含x个对象。

字符串可以通过用双引号括起来来标识:";或单引号:' '.

可以通过前后方括号来识别数组:[].

对象可以通过左、右花括号来标识:{}.

这是你的回答的一个更容易读的版本。我用注释注释了每个顶级数组,以便于识别。

// array 1
[
{"username": "harry"}
]
// array 2
[
{ "id": 1, "name": "playlist1", "tag": "genre" },
{ "id": 2, "name": "playlist1", "tag": "genre" }, 
{ "id": 3, "name": "playlist3", "tag": "genre" }
]
// array 3
[
{ 
"1": [
"https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9", 
"https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"
] 
},
{ 
"2": [
"https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9",
"https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af",
"https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9",
"https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"
] 
},
{ 
"3": [
"https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9",
"https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af",
"https://i.scdn.co/image/ab67616d0000b273503143a281a3f30268dcd9f9",
"https://i.scdn.co/image/ab67616d0000b27369fa55f10c5293bbb985c1af"
]
}
]

第三个数组似乎包含一个对象,其中包含一个列表。就像前面有人提到的,这似乎是错误的数据,我会查看源,而不是试图解析它。话虽如此,循环遍历每个列表并提取数据并非不可能,但这不是正确的方法。

最新更新