{
"ID": "5c9b2de495e8d81ef437539e",
"WeightingFactor": "BIC",
"TargetAmount": 1000,
"FilterCondition": {
"_cls": "ComplexFilter",
"Condition": "AND",
"Rules": [{
"_cls": "Filter",
"Field": "MOODYSFOREIGNCURRENCYCEILINGRATING",
"Operator": "in list",
"Value": "A1,A2,A3"
},
{
"_cls": "Filter",
"Field": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2028"
},
{
"_cls": "ComplexFilter",
"Condition": "OR",
"Rules": [{
"_cls": "Filter",
"Field": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2028"
},
{
"_cls": "Filter",
"Field": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2029"
}
]
}
],
"Not": false
}
}需要将"field"重命名为category everywhere。请建议如何使用任何可用的方法?
已尝试stringify和replace。但它不起作用
预期输出:
{
"ID": "5c9b2de495e8d81ef437539e",
"WeightingFactor": "BIC",
"TargetAmount": 1000,
"FilterCondition": {
"_cls": "ComplexFilter",
"Condition": "AND",
"Rules": [{
"_cls": "Filter",
"Category": "MOODYSFOREIGNCURRENCYCEILINGRATING",
"Operator": "in list",
"Value": "A1,A2,A3"
},
{
"_cls": "Filter",
"Category": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2028"
},
{
"_cls": "ComplexFilter",
"Condition": "OR",
"Rules": [{
"_cls": "Filter",
"Category": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2028"
},
{
"_cls": "Filter",
"Category": "ASOFDATE",
"Operator": "less or equal",
"Value": "26 Nov 2029"
}
]
}
],
"Not": false
}
}发布于 2019-03-29 20:33:51
您可以在给定的JSON字符串中将字符串"field":替换为"category":。
var json = JSON.stringify({ field: { field: 'foo' } }),
newJSON = json.replace(/"field":/g, '"category":');
console.log(JSON.parse(newJSON));
经典的替代品
function replace(object, source, target) {
return Object.assign(...Object.entries(object).map(([k, v]) => ({
[k === source ? target : k]: v && typeof v === 'object'
? replace(v, source, target)
: v
})));
}
var object = { field: { field: 'foo' } },
newObject = replace(object, 'field', 'category');
console.log(newObject);
发布于 2019-03-29 21:18:28
我在Regex上运行了一个性能测试,替换一个键与深度遍历一个JSON对象,并替换一个键,结果发现Regex方法比深度遍历方法慢65%。
下面是以深度遍历的方式完成此操作的代码:
function deepTraverseAndReplace(o,sk,rk) {
for (var key in o) {
if (o[key ] !== null && typeof(o[key])=="object") {
traverse(o[key],sk,rk);
} else if( key == sk ) {
o[rk] = o[key];
delete(o[key]);
}
}
}
deepTraverseAndReplace(jsonObj,'Field','Category')下面是create jsPerf的链接
https://stackoverflow.com/questions/55417490
复制相似问题