[英]How to convert Oracle data to JSON and then use in JavaScript?
環境為: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) 將基於特定 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);
更多關於這里
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.