这并不是我发现的解决方案的问题,也不知道它是如何工作的。我正在进行fetch
调用,并收到了转换为可行JSON所需的文本响应。
"[{\"Rank\":1,\"FISHERMAN_PHONENAME\":\"James Elam\"...}]"
一个JSON.parse
删除了双引号和斜杠的结尾,但是由于我需要对象的json数组,它仍然没有返回,所以我最终这样做了:
if (response.ok) {
const payload = await response.text();
data = JSON.parse(JSON.parse(payload));
}
做到了这一点,但我不知道为什么它需要双重解析才能实现。任何见解都会很棒。
答案 0 :(得分:2)
我不知道为什么它需要双重解析才能实现。
因为数据被双重编码为JSON。 JSON就是
{"Rank":1,"FISHERMAN_PHONENAME":"James Elam"...}
而
"[{\"Rank\":1,\"FISHERMAN_PHONENAME\":\"James Elam\"...}]"
也是有效的JSON,在这种情况下,它是包含其他JSON数据的(JSON)字符串。
这是一个简单的示例,演示了双重编码:
console.log('Once', JSON.stringify({foo: 42}));
console.log('Twice', JSON.stringify(JSON.stringify({foo: 42})));
请注意第一个不包含前导和尾随引号。
您应该修复生成JSON的过程,使其仅编码一次。