Разбор json: тест является существующим ключом json - PullRequest
0 голосов
/ 23 мая 2018

Я запрашиваю с API REST фильтр JIRA, так как Excel, и я возвращаю свой результат в объекте json.Я анализирую этот объект и пытаюсь показать свой результат (пока в msgbox), но у меня проблема, когда ключ json не существует!

Извлечение моего json:

{
    "expand":"schema,names",
    "startAt":0,
    "maxResults":500,
    "total":2,
    "issues":[
    {
        "expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields",
        "id":"00001",
        "fields":{
            "components":[
            {
                "id":"01",
                "name":"component_1"
                },
            {
                "id":"02",
                "name":"component_02"
                }
            ]
            }
        },
    {
        "expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields",
        "id":"00002",
        "fields":{
            "components":[
            ]
            }
        },
    ]
    }

Как вы можете видеть, в моем первом выпуске (id 00001) у меня есть ключ с 2 компонентами, но во втором моем издании (id 0002) янет ключа компонента, потому что для этой проблемы в JIRA эти поля пусты.

Итак, часть моего кода, чтобы показать мой результат:

For Each Item In jsonObject("issues")

    issueId = Item("id")
    compoId1 = Item("fields")("components")(1)("id")
    compoId2 = Item("fields")("components")(2)("id")
    i = i + 1

    'PRINT_OF_MY_RESULT

Next

Моя проблема: Если моя проблема (00001) имеет значение "компонента", все в порядке, и я могу вернуть свойрезультат, но ... если мой issus (00002) не дал результата, мой код не смог определить compoId ... и мой код завис.

У вас было простое решение?Я пробую кое-что с Exists, isEmpty и т. Д. И т. Д., Но для меня ничего не получается: (

1 Ответ

0 голосов
/ 23 мая 2018

Вы можете изменить свое решение примерно так:

For Each Item In jsonObject("issues")
    issueId = Item("id")
    For Each componentItem In jsonObject(Item("fields")("components"))
      If componentItem("id")==1 then
         compoId1 = componentItem("id")
      EndIf
      If componentItem("id")==1 then
         compoId2 = componentItem("id")
      EndIf

    Next
    i = i + 1

    'PRINT_OF_MY_RESULT

Next
...