我有一个JSON文件,我得到的json内容可能包含新行。现在我遇到了一个问题。我收到以下错误:
Unexpected token ↵ in JSON at position 9
注意:错误消息特定地表示此符号:'↵'。这是什么意思?
我的JSON:
{"T":".
^00:00:43^2008-09-11 12:00:00.0"}
但是,如果我删除新行(不管它是新行还是标签空间,无论我面临什么问题,即使它是一个标签空间或新行。它可以正常空间工作。)。下面是修改后的JSON,它看起来不错。
修改JSON:
{"T":".^00:00:43^2008-09-11 12:00:00.0"}
我试图关注类似的线程,如here和here以及一些类似的线程。但即使应用了这些之后也无效。欢迎任何帮助。
这是我尝试的解决方案之一:
var jsonString = JSON.stringify(data).replace(/(\r\n|\n|\r)/gm,"");
是否有检测这些换行符和制表符空格并将其删除?
答案 0 :(得分:1)
你不应该打电话给JSON.stringify()
。这会将字符串中的换行符转换为文字\n
,后者不会被正则表达式中的转义序列匹配。只需直接替换坏数据即可。
var data = `{"T":".
^00:00:43^2008-09-11 12:00:00.0"}`;
var jsonString = data.replace(/(\r\n|\n|\r)/g,"");
var object = JSON.parse(jsonString);
console.log(object);

答案 1 :(得分:0)
这不是有效的JSON值。 如果你参考https://www.json.org/, 换行,回车等都需要包含在价值本身中。
无法修改,因为解析器已经抛出错误。
我能想到的唯一解决方案是让JSON文件的作者像修改JSON一样修改它们的值,或者如果他们想保留该换行符,
{"T":".\n^00:00:43^2008-09-11 12:00:00.0"}
答案 2 :(得分:0)
这对我有用:
if [ -f $4 ] && [ `grep -q -P -x -v [[a-z]x{4}/[\dx{4}] $4` ]
then
echo "error"
exit 1
fi