[英]Converting Blob text to array/JSON object in Javascript
如何将Blob文本(从Oracle DB查询接收到的文本)转换为数组或JSON对象,以便获得所需的项目值?
例如:
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中的某些Array或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"
}]
你必须:
为了获得有效的JSON,所有值都应为String类型(数字除外)。
transaction_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 val = "\\[(\\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)]"; var filter = /(\\b[\\w]{14}\\b)\\S,\\b[\\w]{7}\\s\\W(\\d+)/.exec(val); if (filter === null) { $('#test').html("<p class='error'>Uh oh, the regex came up empty"); } else { var transaction_id = filter[2]; if (filter[1] === "transaction_id") { $('#test').html("<p class='success'>Transaction ID: " + transaction_id + "</p>"); } else { $('#test').html("<p class='error'>Uh oh, there was no <b>transaction_id</b> present</p>"); } }
.error { background-color: red; color: #fff; font-weight: bold; } .success { background-color: lightgreen; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="test"> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.