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

我有 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 对象。请帮忙


月关宝盒
浏览 111回答 3
3回答

吃鸡游戏

遍历数组,查看每个对象,然后通过复制所需的数据来创建一个新数组。例如,我认为如果对象的错误数组为空,则您不关心对象,并且您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

浮云间

最简单的解决方案可以是: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);

函数式编程

您可以使用映射和解构分配来仅捕获所需的属性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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java