JSON对象转换中的嵌套数组

鼻塞

我正在努力转换我拥有的嵌套JSON数组。

{
  "Id": "1234",
  "Company": {
    "element": [{
      "Name": "htc",
      "Contacts": {
        "element": [{
          "name": "john",
          "phone": "1234"
        }, {
          "name": "peter",
          "phone": "5678"
        }]
      },
      "Address": {
        "element": {
          "country": "us",
          "state": "cali"
        }
      }
    }, {
      "Name": "samsung",
      "Contacts": {
        "element": [{
          "name": "luke",
          "phone": "0011"
        }, {
          "name": "james",
          "phone": "2233"
        }]
      },
      "Address": {
        "element": {
          "country": "us",
          "state": "texas"
        }
      }
    }]
  }
}

您会注意到,数组“公司”,“联系人”和“地址”中存在此“元素”。但是我需要提供的输出不应包含诸如以下代码的“元素”:

{
  "Id": "1234",
  "Company": [{
    "Name": "htc",
    "Contacts": [{
      "name": "john",
      "phone": "1234"
    }, {
      "name": "peter",
      "phone": "5678"
    }],
    "Address": [{
      "country": "us",
      "state": "cali"
    }]
  }, {
    "Name": "samsung",
    "Contacts": [{
      "name": "luke",
      "phone": "0011"
    }, {
      "name": "james",
      "phone": "2233"
    }],
    "Address": [{
      "country": "us",
      "state": "texas"
    }]
  }]
}

我不知道如何使用JavaScript。任何想法/提示,不胜感激。谢谢

拉杰什

您可以尝试如下操作:

var data={Id:"1234",Company:{element:[{Name:"htc",Contacts:{element:[{name:"john",phone:"1234"},{name:"peter",phone:"5678"}]},Address:{element:{country:"us",state:"cali"}}},{Name:"samsung",Contacts:{element:[{name:"luke",phone:"0011"},{name:"james",phone:"2233"}]},Address:{element:{country:"us",state:"texas"}}}]}};

var keysToClean = ["Address", "Contacts"]

// Copy object instead of reference
var result = Object.assign({}, data);

result.Company = result.Company.element;
result.Company.forEach(x => {
  keysToClean.forEach(k => {
    x[k] = Array.isArray(x[k]) ? x[k].element : [x[k].element]
  })
})

console.log(result);

注意:我已经使用Object.create和了Arrow functions旧的浏览器不支持它们。您可以参考以下链接以替代深度复制对象的方法:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章