RegEx для получения номера счета из JSON - PullRequest
2 голосов
/ 20 апреля 2019

Мне нужно извлечь число с плавающей точкой после счета.

{"reason_desc":
   {
    "score":"0.1",
    "numOfIndicatrix":"0",
    "indicatrix":[]},
    "success":true,
    "id":"1555039965661065S427A2DCF5787920"
}

Я ожидаю, что на выходе получится 0,1 или любое число, заключенное в "".

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Вам не нужно анализировать JSON с помощью регулярных выражений в Hive, в него встроены такие же функции:

with your_table as (--use your table instead of this
select '{"reason_desc":
   {
    "score":"0.1",
    "numOfIndicatrix":"0",
    "indicatrix":[]},
    "success":true,
    "id":"1555039965661065S427A2DCF5787920"
}' as json_col
)

select get_json_object(t.json_col,'$.reason_desc.score') as score
  from your_table t 

Результат:

0.1

См. Также: json_tuple

1 голос
/ 20 апреля 2019

Этот RegEx может помочь вам получить 0.1.Он делит целевую строку на две группы, где вторая группа ($2) возвращает нужные числа с плавающей точкой:

("score":")([0-9\.\,]+)

RegEx

...