【问题标题】:How to convert Oracle data to JSON and then use in JavaScript?如何将 Oracle 数据转换为 JSON,然后在 JavaScript 中使用?
【发布时间】:2016-04-28 00:21:02
【问题描述】:

环境是:Oracle APEX v4.2.2 / DB是Oracle 11gR2 / 浏览器是:IE11

我目前正在使用 Oracle APEX v4.2.2 开发一个应用程序,我需要在表中获取数据,并将其转换为 JSON。然后,我需要获取此 JSON 数据并在 JavaScript 中使用它,在我的一个页面中使用它来生成 SVG 图。

基于以上内容,在 Oracle APEX 中,我如何才能最好地解决上述要求,即:

1) 将基于特定 SQL 标准的 Oracle 表数据转换为 JSON 的最佳工具/方法?

2) 然后如何在 APEX 页面中使用此 JSON 数据,以便在 JavaScript 函数中使用?

我想我不确定的主要领域是如何将此表数据转换为 JSON,然后如何将此 JSON 数据传递给 JavaScript 函数。

【问题讨论】:

  • 尝试分解这个问题并针对每个问题提出单独的问题。

标签: javascript json plsql oracle11g oracle-apex


【解决方案1】:

1) 基于某个 SQL 转换 Oracle 表数据的最佳工具/手段 JSON 的标准?

假设您熟悉 JSON 概念(例如,对象、列表等);这个PL/JSON 库非常全面,可以从 SQL 转换为 JSON,反之亦然。

在我处理的一个案例中,我只需要将库从 JSON 转换为 SQL 表。为了将 SQL 转换为 JSON(将 SQL 表发送到 MongoDB (JSON)),一个简单的游标对我有用:

FOR i IN (SELECT COL1, COL2,... COLn FROM tab)
LOOP
content := '{"COL1":"'||COL1||'", "COL2":"'||COL2||'", .... "COLN":"'||COLN||'"}';
//do something
END LOOP;

您可以将整个表连接成一个列表[{..}, {...}, ... {..}]并存储在CLOB列中

2) 然后如何在 APEX 页面中使用此 JSON 数据,以供使用 在 javascript 函数中。

所以 JSON 集合现在存储在 CLOB 类型的 SQL 表列中。您可以将该列的值传递给 javaScript 变量。

var text = $v(clob_col);

但是由于它是作为文本存储的,所以需要使用语法将其转换为对象

var obj = JSON.parse(text);

更多关于here

【讨论】:

    【解决方案2】:

    1) 基于某个 SQL 转换 Oracle 表数据的最佳工具/手段 JSON 的标准?

    您是否尝试在 Application Express 4.2 中使用 RESTful Web 服务,通过使用它,您可以创建一个基于 pl/sql 或 sql 生成 json 输出的小型 Web 服务。然后您可以在您的应用程序或其他应用程序中通过 javascript 使用它。 请查看官方 oracle 文档 “在 Application Express 4.2 中创建和使用 RESTful Web 服务”

    2) 然后如何在 APEX 页面中使用此 JSON 数据,以供使用 在 javascript 函数中

    通过使用类似于下面的代码,您可以使用该 Web 服务在您的应用程序中使用数据

    <div id="id01"></div>
    
    <script>
    var xmlhttp = new XMLHttpRequest();
    var url = "myTutorials.txt or http://www.w3schools.com/json/json_http.asp";
    
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var myArr = JSON.parse(xmlhttp.responseText);
            myFunction(myArr);
        }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    
    function myFunction(arr) {
        var out = "";
        var i;
        for(i = 0; i < arr.length; i++) {
            out += '<a href="' + arr[i].url + '">' + 
            arr[i].display + '</a><br>';
        }
        document.getElementById("id01").innerHTML = out;
    }
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多