有没有一种方法可以访问嵌套json的值并将其添加到嵌套对象的外部

时间:2020-04-03 10:57:32

标签: javascript json typescript

对不起,我想不出更好的词来表达我的问题。

所以问题是说我有一个嵌套的json,出于某种原因,我想获取一个嵌套键值对Object的值并将其放在外面。

Json我有

DataSource=  [
      {
        "a": 1,
        "name": "jack",
        "version": 1,
        "Id": "39da",
        "active": false,
        "userId": "jack_user",
        "properties": [
          {
            "id": 7080,
            "key": "country",
            "value": "in",
          },
    {
            "id": 7081,
            "key": "state",
            "value": "xyz",
          },
    ]}]

我想要的杰森:

 DataSource=  [
      {
        "a": 1,
        "name": "jack",
        "version": 1,
        "Id": "39da",
        "active": false,
        "userId": "jack_user",
    "country": "in"
        "properties": [
          {
            "id": 7080,
            "key": "country",
            "value": "in",
          },
    {
            "id": 7081,
            "key": "state",
            "value": "xyz",
          },
    ]}]

使用以下代码,我可以遍历整个JSON。但是,我无法从Properties Array中选择对象。

 for (var i = 0; i < this.DataSource.length; i++) {
          var tempDataSource = this.DataSource;
          console.log(tempDataSource );

2 个答案:

答案 0 :(得分:0)

您可以这样做。 在这里,我假设数据数组只有一个对象。

const data = [
  {
    "a": 1,
    "name": "jack",
    "version": 1,
    "Id": "39da",
    "active": false,
    "userId": "jack_user",
    "properties": [
      {
        "id": 7080,
        "key": "country",
        "value": "in",
      },
      {
        "id": 7081,
        "key": "state",
        "value": "xyz",
      },
    ]
  }
]

data[0].properties.forEach(obj => {
  if (data[0][obj.key] == 'country') {
    data[0][obj.key] = obj.value
  }
})

console.log(data)

输出-

[
  {
    "a": 1,
    "name": "jack",
    "version": 1,
    "Id": "39da",
    "active": false,
    "userId": "jack_user",
    "properties": [
      {
        "id": 7080,
        "key": "country",
        "value": "in"
      },
      {
        "id": 7081,
        "key": "state",
        "value": "xyz"
      }
    ],
    "country": "in"
  }
]

答案 1 :(得分:-1)

您可以在下面尝试我的代码段

let obj = [{
  "a": 1,
  "name": "jack",
  "version": 1,
  "Id": "39da",
  "active": false,
  "userId": "jack_user",
  "properties": [{
      "id": 7080,
      "key": "country",
      "value": "in",
    },
    {
      "id": 7081,
      "key": "state",
      "value": "xyz",
    },
  ]
}];

console.log('berfore', obj);

obj[0][obj[0].properties[0].key] = obj[0].properties[0].value;

console.log('after', obj);