不在数组中的脏JSON对象 - 我该如何解析它?

时间:2018-05-17 19:25:00

标签: javascript json

我目前正在尝试解析以下JSON输出。 这些JSON对象存储在一个大字符串中,而不是存储在JSON数组中。因此它不是有效的JSON。

{"output": "te\ns\nt"}
{"output": "test"}

此字符串还包含多个新行。因此,拆分新行不是一种选择。

然而,有没有办法解析这个无效的JSON,它会产生一个有效的JSON对象数组?

2 个答案:

答案 0 :(得分:2)

如果你的对象列表(让它调用它)包含有效对象,你可以先从每一行创建一个数组,然后遍历该数组并解析JSON:



let data = `{"output": "test"}

{"output": "test"}`; //template string to make the newlines work flawless...

//         first split on newline               filter out ""     map to the parsed JSON
data = data.replace(/}\n*/g, "}**").split("**")  .filter(Boolean)  .map(JSON.parse);

console.log(data);




答案 1 :(得分:1)

这可能有用了。

let string = `{"output": "te\ns\nt"}
{"output": "test"}`

let json = JSON.parse(`[${string.replace(/}[\s]*\{/g, '}, {').replace(/\n/g, '\\n')}]`)

console.log(json) // [ { output: 'te\ns\nt' }, { output: 'test' } ]

不漂亮且非常脆弱,但很快。