Есть ли способ получить доступ к значению вложенного json и добавить его вне вложенного объекта - PullRequest
0 голосов
/ 03 апреля 2020

Извините, я не мог придумать более подходящих слов, чтобы сформулировать свой вопрос.

Итак, проблема в том, что у меня есть вложенный 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 );

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

вы можете сделать это так. Здесь я предполагаю, что массив данных имеет только один объект.

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)

output -

[
  {
    "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"
  }
]
0 голосов
/ 03 апреля 2020

Вы можете попробовать мой фрагмент ниже

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...