要解决JSON.stringify()
自动将中文转译成Unicode的问题,可以通过使用第三方库 json-bigint
或者自行编写转换函数来实现。
下面分别给出两种方法的使用示例:
使用json-bigint
- 安装
json-bigint
:
sh
npm install json-bigint
- 在代码中引入
json-bigint
:
javascript
const JSONbig = require('json-bigint');
- 将 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}
自行编写转换函数
- 定义一个转换函数,遍历所有值,并将其中的非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;
}
- 使用该函数作为
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 字符串并输出,读者可以根据自己的需要选择其中一种。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决JSON.stringify()自动将中文转译成unicode的问题 - Python技术站