当前位置: 首页 > 知识库问答 >
问题:

Nodejs:如何在与其他JSON [duplicate]合并期间保留JSON字符串中的“\u00a0”

越朗
2023-03-14

我必须合并2个json文件,并需要在其中一个文件中保留一个字符串:

< code > " weeks ":" weeks \ u00a 0 days "

合并后的 \u00a0 始终更改为空格:“周”:“周”

我希望它保留为:“周”:“周\u00a0天”

一些代码

//merge.js
const fs = require('fs');
const test1 = fs.readFileSync('./test1.json', 'utf8');
const test2 = fs.readFileSync('./test2.json', 'utf8');

const merge = (obj1, obj2) =>
  JSON.stringify({ ...JSON.parse(obj1), ...JSON.parse(obj2) }, null, 4);

const saveFile = (fileName, obj1, obj2) => {
  fs.writeFile(`${__dirname}/${fileName}`, merge(obj1, obj2), err => {
    if (err) throw err;
    console.log(`The file ${fileName} has been saved!`);
  });
};

saveFile('testFinal.json', test1, test2);

test1.json

{
  "link": {
    "about": "About",
    "version": "version"
  },
  "items": {
    "siteId": "Site ID",
    "siteName": "Site name",
    "siteType": "Site type",
    "weeks": "weeks\u00a0days"
  }
}

test2.json测试2.json

{
  "features": {
    "activateFeatures": "Activate features",
    "confirmation": "Confirmation",
    "hardware": "Hardware",
    "existingHardware": "Existing hardware",
    "emailLicense": "Email license",
    "downloadLicense": "Select quantity"
  }
}

请帮忙


共有2个答案

年光明
2023-03-14
匿名用户

默认情况下,< code>JSON.stringify会保留字符串中的原始字符,并仅对应该转义的元素(如双引号或反斜杠)执行转换,以确保stringified实体的语法正确。

如果希望转义目标字符串中Unicode字符的自定义范围,请使用以下转换构造。当然,您可以在regexp中调整Unicode字符范围,应该编码为< code>\uXXXX。看这里的人物分类:http://www.unicode.org/notes/tn36/Categories.txt

const jsonUtfStringify = inputObject => JSON.stringify(inputObject).replace(
  /[\0-\x1F\x7F-\x9F\xAD\u0378-\uFFFF]/g,
  match => `\\u${(+match.codePointAt(0)).toString(16).padStart(4, '0')}`
)

颜修明
2023-03-14

合并后的\u00a0总是变为空格:“周”:“周-天”。

我想你会发现它转化为一个硬空间,而不是一个空间。例子:

const json = '{"foo": "Testing one\\u00a0two\\u00a0three"}';
console.log(json);
const parsed = JSON.parse(json);
console.log(parsed.foo.includes("\u00a0")); // true
const json2 = JSON.stringify(parsed);
console.log(json2);
console.log(json2.includes("\u00a0")); // true
 类似资料:
  • 我有一个由用户创建的日期对象,其中时区由浏览器填充,如下所示: 不过,当我把它串起来时,时区就消失了 在保留浏览器时区的同时获取ISO8601字符串的最佳方法是使用矩。js和使用<代码>矩。format()。内部字符串化(在本例中为AngularJS) 为了完整性,我的域确实需要本地时间和偏移量。

  • 问题内容: 我最近开始使用Python,并且尝试将我的JSON字符串之一与现有JSON字符串连接在一起。我也在与Zookeeper一起工作,所以当我使用Python kazoo库时,我从zookeeper节点获取了现有的json字符串。 如果我打印,它会给我这样的感觉- 但是,如果我这样做,它会像这样打印出来- 这里将有我现有的JSON字符串。现在我有另一个键值对,我需要在出口添加- 以下是我的P

  • 问题内容: 我有一个由用户创建的日期对象,时区由浏览器填充,如下所示: 不过,当我将其字符串化时,时区会再见 在保留浏览器时区的同时获取ISO8601字符串的最佳方法是使用moment.js并使用,但是如果我通过内部使用的东西序列化整个命令(在这种情况下,是AngularJS)当然是行不通的) 为了完整起见,我的域 确实 需要本地时间和偏移量。 问题答案: 假设您有某种包含的对象: 您可以覆盖原型

  • 问题内容: 我有以下字符串(Java 1.5): 我需要一个数组: 用Java最方便的方法是什么? 问题答案: 这将为您提供所需的数组,只有第一项为空。和: 这将使数组没有空的第一项。 此处的关键是零宽度正向超前(非捕获构造)(请参阅regex pattern docs)。 表示“或者;或:” 是字边界的-在那里是为了不将第一个视为定界符(因为它是序列的开头)

  • 问题内容: 这是解释此问题的最简单方法。这是我正在使用的: 这就是我想要的: 原因是我想将字符串拆分为标记,对其进行操作,然后再次将其放回原处。 问题答案:

  • 我有一个POJO类A,我希望字段按照我定义的顺序,但是“1800号”在响应中出现在最后,因为它以数字开头。我如何避免这种情况? 这就是我得到回应的方式 我在gradle中使用以下库