Создание вложенного объекта JSON Javascript

#javascript #json #rest

#javascript #json #остальное

Вопрос:

Здравствуйте, я хочу создать объект JSON для ресурсов хранения в запросе post в java script, у меня есть значение входного массива, размеры диска, например, ниже:

запрос 1 ввода = [10, 20, 30]

  "storageResources": [
  {
    "stats": [
      {
        "name": "diskSize",
        "units": "GB",
        "value": 10
      },
      {
        "name": "diskIopsConsumed",
        "value": 0
      },
      {
        "name": "diskConsumedFactor",
        "value": 1
      }
    ]
  },
  {
    "stats": [
      {
        "name": "diskSize",
        "units": "GB",
        "value": 20
      },
      {
        "name": "diskIopsConsumed",
        "value": 1
      },
      {
        "name": "diskConsumedFactor",
        "value": "NaN"
      }
    ]
  },
  {
    "stats": [
      {
        "name": "diskSize",
        "units": "GB",
        "value": 30
      },
      {
        "name": "diskIopsConsumed",
        "value": 0
      },
      {
        "name": "diskConsumedFactor",
        "value": 1
      }
    ]
  },
],
  

запрос 2:
ввод [10,20]

     "storageResources": [
  {
    "stats": [
      {
        "name": "diskSize",
        "units": "GB",
        "value": 10
      },
      {
        "name": "diskIopsConsumed",
        "value": 0
      },
      {
        "name": "diskConsumedFactor",
        "value": 1
      }
    ]
  },
  {
    "stats": [
      {
        "name": "diskSize",
        "units": "GB",
        "value": 20
      },
      {
        "name": "diskIopsConsumed",
        "value": 1
      },
      {
        "name": "diskConsumedFactor",
        "value": "NaN"
      }
    ]
  }
],
  

Лучший способ сделать это с помощью функции или вы можете отправить ее по свойствам?

Комментарии:

1. Использование Array.prototype.map()

2. И что вы хотите сделать? Вложены ли эти два массива?

3. Плохо, что он представляет диск с unity… что вы будете делать, если они скажут, что размер диска равен 512 МБ? И вы уверены, что он не смешан с GiB, а не с GB? Программно он должен быть просто длиной в байт и быть представлен в удобном для пользователя представлении…

4. Это были два разных типа запросов, один из которых имеет два диска, а другой — 3 диска.

5. @Endless это именно то, что принимает api

Ответ №1:

Используйте Array.prototype.map для возврата измененного ответа

 $$text.oninput = evt => {
  let json = JSON.parse($$text.value)
  let result = json.storageResources.map(resource =>
    resource.stats.find(e => e.name == 'diskSize').value
  )
  
  console.log(result)
}

$$text.oninput()  
 <textarea id="$$text">{"storageResources":[{"stats":[{"name":"diskSize","units":"GB","value":10},{"name":"diskIopsConsumed","value":0},{"name":"diskConsumedFactor","value":1}]},{"stats":[{"name":"diskSize","units":"GB","value":20},{"name":"diskIopsConsumed","value":1},{"name":"diskConsumedFactor","value":"NaN"}]},{"stats":[{"name":"diskSize","units":"GB","value":30},{"name":"diskIopsConsumed","value":0},{"name":"diskConsumedFactor","value":1}]}]}</textarea>