【问题标题】:Is there a way to access value of nested json and add it outside the the nested Object有没有办法访问嵌套 json 的值并将其添加到嵌套对象之外
【发布时间】:2020-04-03 10:57:32
【问题描述】:

抱歉,我想不出更好的词来表达我的问题。

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

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",
          },
    ]}]

我想要的Json:

 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。但是我无法从属性数组中选择一个对象。

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

【问题讨论】:

  • 你尝试过什么,它到底有什么问题?还有为什么只有"country": "in" 而不是"state": "xyz"?
  • 我能够迭代 Json 并获取我想要的任何值,但我不知道如何在外部显示该值。我只需要基于条件的多个值。基本上我想过滤如果 key == 'country' 然后只在外面显示它

标签: javascript json typescript


【解决方案1】:

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

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"
  }
]

【讨论】:

    【解决方案2】:

    你可以试试我下面的sn-p

    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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多