我在Oracle10g上工作,可以使用内置函数处理XML文档,但不能使用JSON数据类型,因为据我所知,这只能从Oracle12c开始。除了安装APEX_JSON包之外,这里有没有人能用plsql或者其他方法把JSON转换成XML,最终把XML转换成JSON?因为每当我必须将外部JSON文件加载到CLOB列中时,我都必须将其转换为XML,以便使用Oracle10g中的XML内置函数进行管理。
提前感谢!
标记
发布于 2020-11-30 18:40:14
您可以使用pljson包来解析JSON数据。
例如,this question给出了如何使用pljson包解析JSON和提取值的示例。如下所示:
DECLARE
obj pljson := pljson(
'{
"DASHBOARD": {
"userUid": "",
"DATA_DASHBOARD": [
{
"CLE": "TESTTEST",
"X": "",
"Y": "",
"COL": "",
"ROW": "",
"CLASSCOLOR": "",
"COLORS": ["df","df"],
"REGROUPEMENT_ID": "",
"REGROUPEMENT_TEXT": "",
"REGROUPEMENT_CLASSCOLOR": "",
"REGROUPEMENT_X": "",
"REGROUPEMENT_Y": "",
"REGROUPEMENT_COL": "",
"REGROUPEMENT_ROW": "",
"REGROUPEMENT_COLORS": ["d","df"]
}
]
}
}'
);
test varchar2(255);
arr pljson_list;
BEGIN
test := pljson_ext.get_string( obj, 'DASHBOARD.DATA_DASHBOARD[1].REGROUPEMENT_COLORS[1]');
DBMS_OUTPUT.PUT_LINE(test);
arr := pljson_ext.get_json_list( obj, 'DASHBOARD.DATA_DASHBOARD[1].REGROUPEMENT_COLORS');
arr.print;
FOR i IN 1 .. arr.COUNT LOOP
DBMS_OUTPUT.PUT_LINE( arr.get_string(i) );
END LOOP;
END;
/
(注意:对象/包具有pl前缀,因为db<>fiddle不允许创建同义词;如果您的实现创建了适当的同义词,则应该能够删除这些前缀。)
https://stackoverflow.com/questions/65071745
复制相似问题