Javascript 如何重构Json
我目前在修改Json模式时遇到问题,该模式如下:Javascript 如何重构Json,javascript,json,algorithm,typescript,Javascript,Json,Algorithm,Typescript,我目前在修改Json模式时遇到问题,该模式如下: { "$schema": "www.abc.com", "compounds": { "schemas": { "Run": { "type": "object", "properties": { "runCo
{
"$schema": "www.abc.com",
"compounds": {
"schemas": {
"Run": {
"type": "object",
"properties": {
"runContext": {
"type": "object",
"properties": {
"runNumber": {
"type": "integer"
},
"conveyanceType": {
"type": "string"
}
},
"required": [
"runNumber",
"conveyanceType"
]
}
}
}
}
}
}
我知道这可以通过递归实现,我也尝试过获取所需项(代码如下),但我不知道如何将所需项放回属性并更改为布尔值。
提前谢谢
private modifyJson(jsonArr: any) {
//console.log(jsonArr);
for (let i in jsonArr) {
//console.log(typeof i);
let item = jsonArr[i];
if (typeof item === "object") {
//console.log("here " + JSON.stringify(item));
this.modifyJson(item);
if (i === "required") {
console.log("here required " + JSON.stringify(item));
for (let j in item) {
//console.log(item[j]);
const required = item[j]; //fetch required item
}
}
}
}
}
我想把它转换成这样的格式:
{
"$schema": "www.abc.com",
"compounds": {
"schemas": {
"Run": {
"type": "object",
"properties": {
"runContext": {
"type": "object",
"properties": {
"runNumber": {
"type": "integer",
"required": true
},
"conveyanceType": {
"type": "string",
"required": true
}
}
}
}
}
}
}
}
您可以将递归函数与<代码>一起用于循环中的…并在任何级别上使用<代码>必需的键更新对象
const data={“$schema”:“www.abc.com”,“components”:{“schemas”:{“Run”:{“type”:“object”,“properties”:{“runContext”:{“type”:“integer”},“transferancetype”:{“type”:“string”},“required”:[“runNumber”,“transferancetype”]}}}
功能更新(obj){
用于(让道具插入obj){
如果(对象[prop]的类型=='object')更新(对象[prop]);
如果(prop==‘必需’){
obj[prop].forEach(键=>{
if(对象属性[键]){
obj.properties[key].required=true;
}
})
删除obj[prop]
}
}
}
更新(数据)
console.log(数据)