Как разобрать массив в JSON объекте с npm dlv (JavaScript) - PullRequest
0 голосов
/ 08 февраля 2020

Я получаю ответ от запроса GET. Мне нужно разобрать его и получить значение для ключа baseEntityCode , которое будет CPY_COMPANY1 . Я использую npm dlv https://www.npmjs.com/package/dlv, поскольку я могу использовать путь с точечной нотацией. У JSON есть массив, и я до сих пор не нашел способа получить путь к ключу после того, как использовал пример, приведенный npm docs в качестве руководства,

//use string dot notation for keys
delve(obj, 'a.b.c') === 1;

//or use an array key
delve(obj, ['a', 'b', 'c']) === 1;

Вот JSON ответ (я вынул некоторые ключевые ценности, которые могут быть конфиденциальными для нашей компании).

{
  "items": [
    {
      "baseEntityAttributes": [
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ABN",
          "readonly": false,
          "index": 0,
          "created": "2020-02-06T23:21:09.414",
          "valueString": "51824753556",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_ADDRESS1",
          "readonly": false,
          "index": 0,
          "created": "2020-02-06T23:17:43.126",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_CPY_NAME",
          "readonly": false,
          "index": 0,
          "created": "removed",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_POSTCODE",
          "readonly": false,
          "index": 0,
          "created": "removed",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_FULL",
          "readonly": false,
          "index": 0,
          "created": "2020-02-06T23:21:01.87",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_COUNTRY",
          "readonly": false,
          "index": 0,
          "created": "removed",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_CITY",
          "readonly": false,
          "index": 0,
          "created": "2020-02-06T23:18:07.324",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        },
        {
          "baseEntityCode": "CPY_COMPANY1",
          "attributeCode": "PRI_ADDRESS_STATE",
          "readonly": false,
          "index": 0,
          "created": "removed",
          "valueString": "removed",
          "weight": 1.0,
          "inferred": false,
          "privacyFlag": false
        }
      ],
      "links": [],
      "questions": [],
      "code": "CPY_COMPANY1",
      "index": 0,
      "created": "removed",
      "id": removed,
      "name": "removed",
      "realm": "removed"
    }
  ],
  "parentCode": "SBE_TEST2",
  "total": 1,
  "returnCount": 1,
  "data_type": "BaseEntity",
  "delete": false,
  "replace": false,
  "msg_type": "DATA_MSG",
  "option": "EXEC"
}

Вы можете использовать Runkit https://npm.runkit.com/dlv для проверки вашего кода.

Пожалуйста, дайте мне знать, если вопрос не ясен, и вам нужна дополнительная ясность. Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2020

Кажется, что ввод номера индекса массива, как если бы вы указали ключ, - это путь к go. Например,

delve(response, 'items.0.baseEntityAttributes.0.baseEntityCode')

дает

CPY_COMPANY1

, что

{
   "items": [
        {
          "baseEntityAttributes": [
            {
              "baseEntityCode": "CPY_COMPANY1", // <--- This value
              "attributeCode": "PRI_ABN",
              "readonly": false,
              "index": 0,
              "created": "2020-02-06T23:21:09.414",
              "valueString": "51824753556",
              "weight": 1.0,
              "inferred": false,
              "privacyFlag": false
            }, ...

Надеюсь, что это ответ на ваш вопрос.

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