关键词

解决JSON.stringify()自动将中文转译成unicode的问题

要解决JSON.stringify()自动将中文转译成Unicode的问题,可以通过使用第三方库 json-bigint 或者自行编写转换函数来实现。

下面分别给出两种方法的使用示例:

使用json-bigint

  1. 安装 json-bigint:

sh
npm install json-bigint

  1. 在代码中引入json-bigint

javascript
const JSONbig = require('json-bigint');

  1. 将 Unicode 转义字符剔除掉,并使用JSONbig.stringify()代替JSON.stringify(),即可将 JSON 对象转换成字符串格式,保留中文字符。

javascript
const data = {
name: '张三',
age: 18,
id: 12345678901234567890n
};
const jsonString = JSONbig.stringify(data).replace(/\\u/g, '%u');
console.log(jsonString);

运行结果:{"name":"张三","age":18,"id":12345678901234567890}

自行编写转换函数

  1. 定义一个转换函数,遍历所有值,并将其中的非ASCII字符转化为Unicode的字符串。

javascript
function replacer(key, value) {
if (typeof value === 'string') {
return value.replace(/[^\x00-\xff]/g, function(match) {
return '\\u' + match.charCodeAt().toString(16);
});
}
return value;
}

  1. 使用该函数作为JSON.stringify()的第2个参数,即可将非ASCII字符转换成Unicode字符串。

javascript
const data = {
name: '张三',
age: 18,
id: 12345678901234567890n
};
const jsonString = JSON.stringify(data, replacer);
console.log(jsonString);

运行结果:{"name":"\u5f20\u4e09","age":18,"id":12345678901234567890}

以上两种方式,都能实现将中文字符正常转化成 JSON 字符串并输出,读者可以根据自己的需要选择其中一种。

本文链接:http://task.lmcjl.com/news/9435.html

展开阅读全文