我有一个序列化的JSON对象,如下所示:
{
"Sender": "Service",
"Type": "SPIGlassAuditedOrder",
"Data": "{\"Header\":{\"Id\":\"ASDFDSA-8687689-ASDFD\",\"EventType\":\"Order\"}"
}
在“数据”路径中,我想反序列化该路径。但是,我无法通过一个,所有附加的“\”和第二个,数据前的附加引号集 - >标题路径。
我使用了以下具有JSON_TABLE函数的SQL语句:
with tmp as (
select jt1.*
FROM schema.table t,
JSON_TABLE(t.payload, '$'
COLUMNS
sender PATH '$.Sender',
type PATH '$.Type',
data PATH '$.Data') jt1
where t.queue_config_fk = 37
) select * from tmp;
但数据返回Null:
我希望返回的是一个实际反序列化的JSON对象。
非常感谢任何帮助。
答案 0 :(得分:0)
JSON_TABLE
从JSON创建虚拟表。尝试使用JSON_QUERY
选择一个或多个值。
答案 1 :(得分:0)
您还可以在JSON_TABLE中使用JSON_QUERY语义,如下所示
with tmp as (
select jt1.*
FROM schema.table t,
JSON_TABLE(t.payload, '$'
COLUMNS
sender PATH '$.Sender',
type PATH '$.Type',
data VARCHAR2(1000) FORMAT JSON PATH '$.Data') jt1
where t.queue_config_fk = 37
)从tmp;
中选择*请注意 VARCHAR2(1000)FORMAT JSON