如何将 Oracle 数据转换为 JSON,然后在 JavaScript 中使用?

Posted

技术标签:

【中文标题】如何将 Oracle 数据转换为 JSON,然后在 JavaScript 中使用?【英文标题】:How to convert Oracle data to JSON and then use in 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 函数。

【问题讨论】:

尝试分解这个问题并针对每个问题提出单独的问题。 【参考方案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>

【讨论】:

以上是关于如何将 Oracle 数据转换为 JSON,然后在 JavaScript 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 将 Div 数据转换为 json 格式

如何将格式化文本存储在 oracle 表中并将其加载回 json?

将 Oracle 的数字转换为字节,然后转换为值 + 指数

React:如何将 JSON 对象转换为数组并渲染它?

如何将一个json数组类型的字符串转换为json数组,然后遍历数组取出json对象,最后在js中取出里面的属性?

如何将熊猫系列转换为所需的 JSON 格式?