为了账号安全,请及时绑定邮箱和手机立即绑定

我需要使用 javascript 从结果 json 文件中删除不必要的 json 对象

我需要使用 javascript 从结果 json 文件中删除不必要的 json 对象

月关宝盒 2022-06-23 10:25:29
我有 10000 行的结果 json 文件。在一个数组对象中,有一些我需要删除的不必要的 json 对象。我尝试了很多方法,但它对我不起作用。附上json文件的那一行[  {    "product_id": "easybridge",    "errors": []  },  {    "product_id": "learningstudio",    "errors": []  },  {    "product_id": "pearsontestprep",    "errors": []  },  {    "product_id": "productization",    "errors": []  },  {    "product_id": "equella",    "errors": [      {        "property": "instance.test_ids[1]",        "message": "requires property \"maintenance\"",        "schema": {          "$id": "#/properties/test_ids/items",          ],          "properties": {            "trend": {              "$id": "#/properties/test_ids/items/properties/trend",              "examples": [                true              ]            },            "display": {              "$id": "#/properties/test_ids/items/properties/display",              "type": "boolean",              "examples": [                true              ]            },            "test_id": {              "$id": "#/properties/test_ids/items/properties/test_id",              "type": "string",            },            "test_name": {              "$id": "#/properties/test_ids/items/properties/test_name",              "type": "string",            },            "maintenance": {              "$id": "#/properties/test_ids/items/properties/maintenance",              "type": "boolean",              ]            },        "instance": {          "trend": false,          "display": false,          "test_id": "8597ae3c-e2a9-45c7-b279-bde1710681be",          "test_name": "Equella Pearsonresearch Ping Test",          "nrAlertStatus": "enabled",          "test_locations": [            {              "alert_state": false,              "location_name": "AWS_US_WEST_2",              "location_label": "Portland, OR, USA",              "included_to_health": false            }如果错误 json 数组不为空。我什至不需要这个 json 我如何使用 java 脚本或 java 删除“模式”json 对象和其他不必要的 json 对象和数组,特别是“模式”json 对象。请帮忙
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

遍历数组,查看每个对象,然后通过复制所需的数据来创建一个新数组。


例如,我认为如果对象的错误数组为空,则您不关心对象,并且您schema永远不关心:


let newJSON = [];


//Assume the json variable is the parsed JSON file you posted.

for (let element of json) {


    //Must have at least one error

    if (element.errors.length > 0) {


        //Create a new object

        let newObj = {

            "product_id" : element.product_id,

            "errors" : []

        };


        //Add each errror


        for (let error of element.errors) {


            //Only copy across what we need

            newObj.errors.push({

                "property" : error.property,

                "message" : error.message

            });

        }


        //Add object to our new array of JSON

        newJSON.push(newObj);

    }

}


//newJSON is your processed JSON output


查看完整回答
反对 回复 2022-06-23
?
浮云间

TA贡献1829条经验 获得超4个赞

最简单的解决方案可以是:


const records = [{

  "product_id": "learningstudio",

  "errors": []

},

{

  "product_id": "pearsontestprep",

  "errors": []

},

{

  "product_id": "equella",

  "errors": [{

    "property": "instance.test_ids[1]",

    "message": "requires property \"maintenance\"",

    "schema": {

      "$id": "#/properties/test_ids/items",

     }

  }]

}];


const filteredRecords = records.map((record) => {

  record.errors = record.errors.map((error) => {

    return {property: error. property, message: error.message};

  });

  return record;  

});


console.log(filteredRecords);


查看完整回答
反对 回复 2022-06-23
?
函数式编程

TA贡献1807条经验 获得超9个赞

您可以使用映射和解构分配来仅捕获所需的属性


let json = [{"product_id": "equella", "errors": [{"property": "instance.test_ids[1]","message": "requires property \"maintenance\"",'xyz': 'not needed','useless': 'not needed',},{'xyz': 'not needed',}]},]

 

let op = json.map(({product_id,errors}) =>{ 

 let { property, message } = errors[0]

 return { product_id, errors: {property,message}}

})

 

 console.log(op)


查看完整回答
反对 回复 2022-06-23
  • 3 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信