如何在Oracle 10g中将JSON转换为XML

问题描述 投票:0回答:2

我在 Oracle 10g 上工作,可以使用内置函数来处理 XML 文档,但不能使用 JSON 数据类型,因为据我所知,这只能从 Oracle 12c 开始。 除了安装 APEX_JSON 包之外,这里还有人有一些 plsql 或其他方法将 JSON 转换为 XML 并最终将 XML 转换为 JSON 吗?因为每当我必须将外部 JSON 文件加载到 CLOB 列中时,我都必须将其转换为 XML,以便使用 Oracle 10g 中的 XML 内置函数来管理它。

提前致谢!

马克

plsql oracle10g
2个回答
0
投票

您可以使用 pljson 包来解析 JSON 数据。

例如,这个问题给出了如何使用 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 不允许创建同义词;如果您的实现创建了适当的同义词,您应该能够删除这些前缀。)


0
投票

我们如何在oracle 12g中做到这一点?

© www.soinside.com 2019 - 2024. All rights reserved.