Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重构Json_Javascript_Json_Algorithm_Typescript - Fatal编程技术网

Javascript 如何重构Json

Javascript 如何重构Json,javascript,json,algorithm,typescript,Javascript,Json,Algorithm,Typescript,我目前在修改Json模式时遇到问题,该模式如下: { "$schema": "www.abc.com", "compounds": { "schemas": { "Run": { "type": "object", "properties": { "runCo

我目前在修改Json模式时遇到问题,该模式如下:

{
      "$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(数据)