Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 脏JSON对象不在数组中-如何解析?_Javascript_Json - Fatal编程技术网

Javascript 脏JSON对象不在数组中-如何解析?

Javascript 脏JSON对象不在数组中-如何解析?,javascript,json,Javascript,Json,我目前正在尝试解析以下JSON输出。 这些JSON对象存储在一个大字符串中,而不是JSON数组中。因此,它不是有效的JSON {"output": "te\ns\nt"} {"output": "test"} 此字符串还包含多个新行。因此,在新行上拆分不是一个选项 然而,有没有办法解析这个无效的JSON,从而生成一个有效的JSON对象数组?如果您的对象列表(我们称之为)包含有效的对象,您可以首先从每一行生成一个数组,然后遍历该数组并解析JSON: let data=`{“output”:“t

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

{"output": "te\ns\nt"}
{"output": "test"}
此字符串还包含多个新行。因此,在新行上拆分不是一个选项

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

如果您的对象列表(我们称之为)包含有效的对象,您可以首先从每一行生成一个数组,然后遍历该数组并解析JSON:

let data=`{“output”:“test”}
{“输出”:“测试”}`//模板字符串使换行符工作完美。。。
//换行符filter out“”上的第一次拆分映射到已解析的JSON
data=data.replace(/}\n*/g,“}**”).split(“**”).filter(Boolean.map(JSON.parse);

控制台日志(数据)这里有一些脏东西可能有用

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' } ]

不是很漂亮,也不是很脆弱,但是很快。

当然,到目前为止你尝试了什么?我们正在处理一个json对象字符串吗?是的,我们:)事实上这是命令行工具的脏输出。@mhodges不是真的,我正试图解析一个充满json对象的字符串(但不是存储在数组中)。@mhodges Updated:)确实,但如果字符串中存在多个换行符,\n则此操作将中断。事实上,我正在使用的命令行工具生成的输出就是这种情况。@WouterBloeyaert您可以
.filter()
输出空行
.split().filter(Boolean).map(…)
谢谢@mhodges!现在,我唯一不能做的事情就是如何处理对象中的文本和未转义的
\n
s。。。你知道吗?@WouterBloeyaert忘了
.filter(布尔值)
,对不起。完整的行是:
.replace(/}\n*/g,“}**”).split(“**”).filter(Boolean).map(…)
感谢您的输入:)@mhodges Feel更新您的描述