无论如何我都可以获得这种格式错误的 JSON 格式,这很奇怪,我无法手动控制此 JSON,所以我需要获取这些数据并使用可从 HTTP get 观察到的 RXJS 对其进行操作
{
"firstNm": "Ronald",
"lastNm": "Mandez",
"avatarImage": "https://randomuser.me/api/portraits/men/74.jpg"
}
{
"firstNm": "Ronald",
"lastNm": "Mandez",
"avatarImage": "https://randomuser.me/api/portraits/men/74.jpg"
{
"firstNm": "Ronald",
"lastNm": "Mandez",
"avatarImage": "https://randomuser.me/api/portraits/men/74.jpg"
}
我在控制台中尝试使用您的 JSON,这似乎有效。 在我使用的 map 函数中,您可能可以实现更通用的替换方法来更改字符串,但它适用于此示例。
function fixBadJSON(response){
let badJSON = JSON.stringify(response); // added this edit in case you don't know how to get the response to a string
let arr = badJSON.split('}n'); // Looks like the JSON elements are split by linefeeds preceded by closing bracket, make into arr length of 3
let fixedArr = arr.map((item)=>{ // map the array to another, replace the comma at the end of the avatarImage key. elements in array should be proper JSON
if(item[item.length] != '}') item += '}'; //put the brackets back at thend of the string if they got taken out in the split, probably a better way to handle this logic with regex etc
return item.replace('jpg",','jpg"')
});
let parsedJSON = JSON.parse(JSON.stringify(fixedArr));
return parsedJSON
}
获取您在那里发布的 JSON 数据并将其作为字符串复制到变量并测试函数,它将返回格式正确的 JSON 数据数组。
当您从服务获得响应以转换数据时调用它。 就可观察链和您可能看到的任何异步问题而言,这些都是独立的事情。 此函数仅用于转换格式错误的 JSON。