Javascript SyntaxError:使用fs读取文件时JSON中出现意外的标记U

Javascript SyntaxError:使用fs读取文件时JSON中出现意外的标记U,javascript,node.js,json,Javascript,Node.js,Json,我正在使用Node.js v12.14.1,在解析包含\U0001f970的JSON文件时遇到问题 以下是我试图读取和解析的文件内容: {“随机键”:{“随机值\U0001f970\U0001f970”:1} 下面是我写的阅读程序: var fs=require('fs'); var data=JSON.parse(fs.readFileSync('sample.JSON','utf8'); 我在执行程序时遇到以下错误:SyntaxError:JSON中的意外标记U位于位置29 当我尝试在R

我正在使用Node.js v12.14.1,在解析包含
\U0001f970
的JSON文件时遇到问题

以下是我试图读取和解析的文件内容:

{“随机键”:{“随机值\U0001f970\U0001f970”:1}
下面是我写的阅读程序:

var fs=require('fs');
var data=JSON.parse(fs.readFileSync('sample.JSON','utf8');
我在执行程序时遇到以下错误:
SyntaxError:JSON中的意外标记U位于位置29

当我尝试在REPL中解析JSON时,它可以正常工作

JSON.parse({“randomKey”:{“random value\U0001f970\U0001f970”:1}})

如何读取文件并解析JSON而不出现任何问题?

\U
不是有效的字符串(也不是JavaScript字符串文本)。此外,正常的
\u
转义序列后面跟着4位数字,而不是其中的8位。您需要将文件转换为有效的JSON—最好是修复任何程序编写的文件,但您也可以动态执行:

const json = '{"randomKey":{"random value \\U0001f970\\U0001f970":1}}';
const data = JSON.parse(json.replace(/\\U([0-9a-f]{4})([0-9a-f]{4})/g, '\\u$1\\u$2'))

在意识到JSON无效后,由于,我使用以下代码将数据转换为有效的JSON:

var fs=require('fs');
var json=fs.readFileSync('sample.json','utf8');
const sanitizedJSON=json.replace(/\\U([0-9a-f]{8})/g,(match)=>String.fromCodePoint(parseInt(match.replace(/\\U/g',),16));
const data=JSON.parse(sanitizedJSON);
控制台日志(数据);
这将打印所需的输出:


{randomKey:{'random value在REPL中是
JSON.parse({“randomKey”:{“random value\\U0001f970\\U0001f970”:1}}})
,它也不起作用。