Цикл через API в Talend и сопоставление данных по определенным идентификационным номерам

я работаю в Talend Open Studio и использую JIRA API, API в JSON выглядит так:

{
"sprints": [{
    "id": 10447,
    "sequence": 10447,
    "name": "SP120 - Plannibal Smith",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10391,
    "sequence": 10391,
    "name": "SP119 - Don't bug or bend over",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10244,
    "sequence": 10244,
    "name": "SP118 - Be an all grounder!",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10183,
    "sequence": 10183,
    "name": "SP117 - The R Factor",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10182,
    "sequence": 10182,
    "name": "SP116 - Deliverfull",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10123,
    "sequence": 10123,
    "name": "SP115 - Appartemenneke",
    "state": "CLOSED",
    "linkedPagesCount": 0
}, {
    "id": 10048,
    "sequence": 10048,
    "name": "SP114 - two three letter words",
    "state": "CLOSED",
    "linkedPagesCount": 0
}],
"velocityStatEntries": {
    "10048": {
        "estimated": {
            "value": 15.5,
            "text": "15.5"
        },
        "completed": {
            "value": 6.0,
            "text": "6.0"
        }
    },
    "10244": {
        "estimated": {
            "value": 15.5,
            "text": "15.5"
        },
        "completed": {
            "value": 7.5,
            "text": "7.5"
        }
    },
    "10182": {
        "estimated": {
            "value": 12.0,
            "text": "12.0"
        },
        "completed": {
            "value": 10.0,
            "text": "10.0"
        }
    },
    "10391": {
        "estimated": {
            "value": 16.0,
            "text": "16.0"
        },
        "completed": {
            "value": 3.0,
            "text": "3.0"
        }
    },
    "10183": {
        "estimated": {
            "value": 12.0,
            "text": "12.0"
        },
        "completed": {
            "value": 7.0,
            "text": "7.0"
        }
    },
    "10123": {
        "estimated": {
            "value": 11.5,
            "text": "11.5"
        },
        "completed": {
            "value": 5.5,
            "text": "5.5"
        }
    },
    "10447": {
        "estimated": {
            "value": 7.0,
            "text": "7.0"
        },
        "completed": {
            "value": 3.0,
            "text": "3.0"
        }
    }
}
}

и моя работа в Talend это tRESTClient --> tExtractJSONFields --> tLogRow

в настоящее время я получаю либо этот вывод с этим запросом Loop Jsonpath ("$.sprints"):

Первый сценарий:

первый сценарий

или этот вывод с этим запросом Loop Jsonpath ("$"):

Второй сценарий:

второй сценарий

как я могу объединить их И получить значения: оценено и завершено в строках вместо массива... имейте в виду, что я новичок в JAVA/Talend/API..

Заранее спасибо :)


person StackedOverflow    schedule 06.10.2016    source источник
comment
JSON может быть сложным. Вы можете взглянуть на компонент tJSONNormalize, доступный в Talend Exchange. Он извлекает JSON в серию пар ключ/значение, с которыми при определенных обстоятельствах может быть намного проще работать, чем с чистым JSON. exchange.talend.com/   -  person BRM    schedule 07.10.2016
comment
спасибо @BRM за ответ, поэтому сейчас я использую tJSONNormalize, но я не уверен, как работать с выводом, который я получаю от него... я хотел бы получить значения, которые появляются после VelocityStatEntries. поэтому первым будет: 10516, затем 10244 и т. д. Теперь я получаю это (короткая версия):   -  person StackedOverflow    schedule 10.10.2016
comment
спринты›0|id|10516 спринтов›0|последовательность|10516 спринтов›0|имя|SP121 — BRK рельефные спринты›0|состояние|ЗАКРЫТЫЕ спринты›0|linkedPagesCount|0 VelocityStatEntries›10516›оценочное|значение|10,0 VelocityStatEntries›10516 ›оценка|текст|10.0 VelocityStatEntries›10516›выполнено|значение|7.5 VelocityStatEntries›10516›выполнено|текст|7.5   -  person StackedOverflow    schedule 10.10.2016
comment
Вы пробовали играть со стартовым путем в tJSONNormalize? Может быть полезно использовать один из множества синтаксических анализаторов JSON, которые можно найти в Интернете, чтобы определить, какой начальный путь следует использовать.   -  person BRM    schedule 11.10.2016
comment
я пробовал это, но это не очень помогло мне, есть ли у вас какие-либо предложения о том, какой начальный путь я должен использовать, учитывая приведенную выше информацию? также см. этот вопрос @BRM, это почти то же самое. stackoverflow.com/questions/39958857 /   -  person StackedOverflow    schedule 11.10.2016
comment
Если вы исчерпали все варианты анализа потока в формате JSON, возможно, пришло время рассмотреть другие способы его анализа. Я добился некоторого успеха в одной работе, выполнив кучу подстановок строк во входящем потоке (для этого вы можете использовать tReplace), чтобы преобразовать строку в форму, которую можно проанализировать как строку с разделителями, или с помощью компонента tNormalize. Он не очень надежный, но может работать. Вы также можете анализировать с помощью регулярных выражений, если вы в этом хороши.   -  person BRM    schedule 13.10.2016