I need to extract a field from a string column using hive
Input: [{"name":"MANAGER"}]
Output: MANAGER
I was able to fetch the record using the below regular expression, but I am not able to remove ]
from the output.
Query built:
select split(regexp_replace('([{"name":"MANAGER"}])','^\\(|\\)$|[{"}]',''),': *')[1];
Output obtained:
MANAGER]
Could you please help me to remove the ]
from the output and get only MANAGER
in this example using hive.
CodePudding user response:
You can atually parse this with get_json_object
function as the string you shared is a JSON string:
select get_json_object(regexp_replace('[{"name":"MANAGER"}]', '[\\[\\]]', ''), '$.name')
See the documentation:
get_json_object
A limited version of JSONPath is supported:
$
: Root object.
: Child operator[]
: Subscript operator for array*
: Wildcard for []Syntax not supported that's worth noticing:
:
Zero length string as key..
: Recursive descent@
: Current object/element()
: Script expression?()
: Filter (script) expression.[,]
: Union operator[start:end.step]
: array slice operator