парсинг пользовательских значений JSON - PullRequest
0 голосов
/ 22 октября 2018

Я использовал JSON_TABLE для разбора полезных нагрузок JSON, например:

{
"entry": [
    {
        "changes": [
            {
                "field": "leadgen",
                "value": {
                    "ad_id": "444444444",
                    "form_id": "444444444444",
                    "leadgen_id": "444444444444",
                    "created_time": 1539170312,
                    "page_id": "444444444444",
                    "adgroup_id": "44444444444"
                }
            }
        ],
        "id": "0",
        "time": 1539170312
    }
],
"object": "page"
}

Я использовал что-то вроде этого, чтобы получить значения:

select id,
           time,
           ad_id,       
           form_id,     
           leadgen_id,  
           created_time,
           page_id,
           adgroup_id
      from json_table (p_raw_payload  FORMAT JSON,   '$'
              COLUMNS (id             varchar2  path '$.entry.id',
                       time           number    path '$.entry.time',
                       NESTED                   path '$.entry[*]'
              COLUMNS (ad_id          varchar2  path '$.changes.value.ad_id',
                       form_id        varchar2  path '$.changes.value.form_id',
                       leadgen_id     varchar2  path '$.changes.value.leadgen_id',
                       created_time   number    path '$.changes.value.created_time',
                       page_id        varchar2  path '$.changes.value.page_id',
                       adgroup_id     varchar2  path '$.changes.value.adgroup_id')));

Этоработает нормально.

Моя проблема в том, что теперь полезные нагрузки JSON, которые я получаю, являются "пользовательскими" в следующем формате:

{
"created_time": "2015-02-28T08:49:14+0000",
"id": "44444444444444",
"ad_id": "44444444444444",
"form_id": "44444444444444",
"field_data": [
    {
        "name": "car_make",
        "values": [
            "Honda"
        ]
    },
    {
        "name": "full_name",
        "values": [
            "Joe Example"
        ]
    },
    {
        "name": "email",
        "values": [
            "joe@example.com"
        ]
    },
    {
        "name": "selected_dealer",
        "values": [
            "99213450"
        ]
    }
],
...
}

Что означает КАЖДОЕ имя столбца, в котором я на самом деле заинтересован,входите в отдельные теги «name» в качестве значений .... («name»: «car_make» / «value»: «Honda» и т. д.).

Как правильно решить эту проблему?

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