json.stringify 对象并重命名 json 中的变量
Posted
技术标签:
【中文标题】json.stringify 对象并重命名 json 中的变量【英文标题】:json.stringify object and rename variables in json 【发布时间】:2022-01-20 15:29:05 【问题描述】:我想序列化一个对象o
,它有一个名为a
的方法。该对象还包含一个变量,其名称为_a
。
我现在想将此对象解析为 JSON 字符串。但是 JSON 看起来像这样:
"_a": "",
...
问题
有没有办法舒适地删除/替换 _
字符(或任何字符)。
我尝试过的
-
JSON.stringify() 方法的重命名参数。
1.1。没用,因为您只能返回更改后的值而不能返回键。
迭代对象的所有键,删除它们并创建一个新的重命名键,然后分配值(参见下面的代码)。
2.1。当有“子对象”时,这可行,但不是真正可读且令人讨厌。
Object.keys(o).forEach(key =>
Object.defineProperty(o, key.replace("_", ""),
Object.getOwnPropertyDescriptor(o, key));
delete o[key];
);
【问题讨论】:
正如你所说的对象有一个名为a
的方法和一个名为_a
的属性,从属性名称中删除_是可能的,但要么方法将继续存在,要么属性。
【参考方案1】:
这样的东西对你有用吗:
let obj =
"_a": "",
"b": "Test"
let result = Object.entries(obj).reduce((acc, [key, value]) =>
let newKey = key.replace('_', '')
acc[newKey] = value
return acc
, )
console.log(result)
【讨论】:
但该对象也有一个名为_a
的方法,而您的方法只有其中一个能够存活。以上是关于json.stringify 对象并重命名 json 中的变量的主要内容,如果未能解决你的问题,请参考以下文章
将 freemarker 对象呈现为 JSON 的最简单方法是啥?