Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中将Blob文本转换为array/JSON对象_Javascript_Arrays_Json_Blob - Fatal编程技术网

在Javascript中将Blob文本转换为array/JSON对象

在Javascript中将Blob文本转换为array/JSON对象,javascript,arrays,json,blob,Javascript,Arrays,Json,Blob,如何将Blob文本(从oracledb查询接收)转换为array或JSON对象,以便获得所需的items值 例如: var connection = new ActiveXObject("ADODB.Connection"); var connectionstring = "some conection string"; connection.Open(connectionstring);

如何将Blob文本(从oracledb查询接收)转换为array或JSON对象,以便获得所需的items值

例如:

            var connection = new ActiveXObject("ADODB.Connection");          
            var connectionstring = "some conection string";
            connection.Open(connectionstring);
            var rs = new ActiveXObject("ADODB.Recordset");                   
            var queryString="Select COLUMNNAME from SOMETABLE where id=123456"   
            rs.Open(queryString, connection);                
            var val=rs.fields(0).value;
val
中,我得到了如下所示的单元格blob值

\[(\22transaction_id\22,variant \224937178\22);(\22deal_tracking_id\22,variant \224876812\22);(\22instrument_type\22,variant \22COMM-VT\22);(\22internal_portfolio\22,variant \22MA_STRUCTURED_BUY\22);(\22internal_contact\22,variant \22C19850\22);(\22transaction_status\22,variant \22Validated\22);(\22last_update_user\22,variant \22ENDUR_MGR02\22);(\22last_updated\22,variant 2015-11-25T02\3a32\3a00);(\22commodity\22,variant \22Natural Gas\22);(\22source_system\22,variant \22EndurGO\22);(\22input_date\22,variant 2015-10-06T00\3a00\3a00);(\22last_exercise_date\22,variant 2015-11-27T14\3a00\3a00);(\22product_type\22,variant 103)]
从上面的blob中,我想得到“transaction_id”的值 如何将上述值转换为Javascript中的某个数组或JSON格式???

以获得此值:

[{
  "transaction_id"     : "4937178",
  "deal_tracking_id"   : "4876812",
  "instrument_type"    : "COMM-VT",
  "internal_portfolio" : "MA_STRUCTURED_BUY",
  "internal_contact"   : "C19850",
  "transaction_status" : "Validated",
  "last_update_user"   : "ENDUR_MGR02",
  "last_updated"       : "2015-11-25T02:32:00",
  "commodity"          : "Natural Gas",
  "source_system"      : "EndurGO",
  "input_date"         : "2015-10-06T00:00:00",
  "last_exercise_date" : "2015-11-27T14:00:00",
  "product_type"       : "103"
}]
你必须:

  • 移除val.replace('(','')
  • 移除\22val.replace('\22','')
  • 替换);val.Replace(');',',')
  • ,variant替换为val.Replace(',variant',':')
  • \3a替换为val.Replace('\3a',':');(日期格式!)
  • [替换为[{val.Replace('[','[{')
  • ]替换为}]val.Replace(']','}]')

另外,要获得有效的JSON,所有值都应该是字符串类型(数字除外)。

事务id的值应该是变量号吗?如
variant\224937178\22)

假设您总是在寻找那个变量号,并且您收到的响应的格式总是相同的,那么您可以在Javascript中简单地使用Regex来提取ID

var filter = /(\b[\w]{14}\b)\S,\b[\w]{7}\s\W(\d+)/.exec(val);
if (filter === null) {
  console.log("There was an error, the Regex came up empty.");
} else { 
    if (filter[1] === "transaction_id") {
    var transaction_id = filter[2];
    } else {
      var transaction_id = null;
    }
}
您可以运行下面的代码片段,查看如何将HTML输入到页面上。
var=“\[(\22transaction\u id\22,variant\224937178\22);(\22deal\u tracking\u id\22,variant\224876812\22);(\22instrument\u type\22,variant\22COMM-VT\22);(\22internal\u portfolio\22,variant\22MA\u-STRUCTURED\u-BUY\22);(\22internal\u-contact\22,variant\22C19850\22);(\22transaction\22交易状态\22,variant\22已验证\22);(\22last\u update\u user\22,variant\22ENDUR\u MGR02\22);(\22last\u updated\22,variant 2015-11-25T02\3a32\3a00);(\22commodity\22,variant\22Natural Gas\22);(\22source\u system\22,variant\22EndurGO\22);(\22input\u date\22,variant 2015-10-06T00\3a00\3a00);(\22last\3a00练习日期\22,variant 2015-11-27T14\3a00\3a00);(\22,产品类型103)“;
var filter=/(\b[\w]{14}\b)\S\b[\w]{7}\S\w(\d+/.exec(val);
如果(筛选器===null){
$('test').html(

哦,正则表达式是空的); }否则{ var事务_id=过滤器[2]; if(过滤器[1]=“事务id”){ $('test').html(“

事务ID:“+Transaction\u ID+”

”); }否则{ $('test').html(“

呃,哦,没有事务id存在”

”; } }
。错误{
背景色:红色;
颜色:#fff;
字体大小:粗体;
}
.成功{
背景颜色:浅绿色;
}


谢谢你的回复。但是有没有其他方法或函数可以将blob整数值转换为array/JSON?我猜你正在使用ADOdb。如果是这样,你可以看看这个响应:JS中的这种解析真的是个坏主意。