Javascript 在Oracle APEX v4.2中处理JSON数据

Javascript 在Oracle APEX v4.2中处理JSON数据,javascript,json,oracle11g,oracle-apex,Javascript,Json,Oracle11g,Oracle Apex,我在Oracle APEX v4.2中的JavaScript动态操作中使用了以下代码来处理JSON,即: var graph_data = $v('P780_GRAPH_DATA'); var rule_data = $v('P780_RULE_DATA'); var unique = function(origArr) { var newArr = [], origLen = origArr.length, found, x, y; for (x = 0;

我在Oracle APEX v4.2中的JavaScript动态操作中使用了以下代码来处理JSON,即:

var graph_data = $v('P780_GRAPH_DATA');
var rule_data = $v('P780_RULE_DATA');

var unique = function(origArr) {
  var newArr = [],
      origLen = origArr.length,
      found, x, y;

  for (x = 0; x < origLen; x++) {
    found = undefined;
    for (y = 0; y < newArr.length; y++) {
      if (origArr[x] === newArr[y]) {
        found = true;
        break;
      }
    }
    if (!found) {
      newArr.push(origArr[x]);
    }
  }
  return newArr;
}

    var accessLines = graph_data.filter(function (line) {
      return !isTrunkLine(line);
    });
    var trunkLines = graph_data.filter(isTrunkLine);

    accessLines.forEach(drawLine);
    trunkLines.forEach(drawLine);


    function isTrunkLine(intf_type) {
      var purpose = intf_type.purpose;

      return purpose === 'TRUNK';
    }

不确定我做错了什么,但我基本上在graph_数据中有一个有效的JSON对象,因为我通过JSONLint运行了它,但不确定问题出在哪里。

最后在Tom的帮助下,我忘记了解析JSON对象,并且在Oracle APEX v4.2中对DA的限制达到了4000个字符

请参阅:


我不得不重新安排我的JavaScript代码,这是一个麻烦。现在一切都好了

$v('P780\u图形\u数据')
返回什么?它应该是一个数组。@Tom我实际上是通过一个select语句构造自己的JSON的,我把它括在“[”和“]”方括号内,看起来像是一个字符串。基本上是一个返回VARCHAR2的函数调用。我怎样才能转换成数组?你怎么得到这个字符串?通过ajax调用?使用返回此格式字符串的函数调用:选择“{”| |““id”:“| | | |”;“| |”;“node”:“| | node | |”;“node|u name”:“| node|u name |”’etcSorry,我可能还不够清楚。您正在用sql构造这个字符串,但不知怎么地将它传递给Javascript。例如,在这段代码之前,您有一个Ajax调用,它与一个通过htp.p返回该字符串的按需进程通信?或者您正在使用其他方式传递该数据。这可能有助于de确定最有效的解决方案。如果它在代码之前,您可以添加它吗?
Uncaught TypeError: graph_data.filter is not a function