从JSON中删除换行符

8

假设我有以下字符串:

{
  "{\n <<<-- error
     \"SomeKey\": {\n    \"somevalue\": \"test\",\n,
     \"AnotherKey\": \"Long string should be here \n another line break here \n and another line here \"
    }
}

当您尝试使用JSON.parse解析此字符串时,它会抛出一个错误,指向第一个换行符。有没有办法除去换行符,而不删除不在引号内的\n?

3
产生这个 JSON 字符串的是什么?那才是你应该解决的重点,而不是试图在稍后修复损坏的 JSON。 - Danmoreng
基本上,它返回一个格式化的JSON响应,其中每行开头都包含\n。 - Cyril
分享你的实际JSON。 - Muthu Kumaran
那个端点是什么?它没有生成正确的JSON。 - Danmoreng
你如何解析XML呢? - Danmoreng
请勿破坏您的帖子。一旦您发布了一个问题,您已经将内容授权给了整个 Stack Overflow 社区(根据 CC-by-SA 许可证)。如果您想要将此帖子与您的账户分离,请参阅 What is the proper route for a disassociation request? - Bugs
3个回答

15

删除 JSON 字符串中的 \n 并执行 JSON.parse

var json_data = "{\n \"Fullname\": \"Alex Johnson\",\n \"FirstName\": \"Alex\", \n \"LastName\": \"Johnson\"\n }";
 
 var obj = JSON.parse(json_data.replace(/\r?\n|\r/g, ''));
 
 console.log(obj);


1
那样做是可行的,但它也会应用于引号内的内容。 - Cyril
我认为真正的解决方法是,你应该向后端或API团队请求正确的JSON。 - Muthu Kumaran

1
使用 JSON.stringify 并移除换行符;
var json = JSON.stringify(jsonData);
json = json.replace(/\\n/g, '');

0
你应该使用数组或映射,并将其转换为正确的JSON字符串,因为那个JSON字符串看起来像是由错误的字符串拼接逻辑生成的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接