我目前正在尝试创建一个 UDF,以将基于 Web 流量的键值对字符串拆分为 JSON。
我已经设法输出一个 JSON 对象,但我希望能够根据键的索引号购买或查看的产品数量动态添加嵌套项目。
当仅查看产品时,字符串中始终只有一个产品。只有当它是一个交易时,它才不止一个,但我认为最好符合 json 的结构,然后根据交易 ID 的存在来识别购买或查看。例如:
购买的物品:
sessionid=12345&transactionid=555555&product1=apples&productprice1=12&product1qty=1&product2=pears&productprice2=23&product2qty=3&transactionamount=58
输出应如下所示:
[
{
"sessionid":12345,
"transactionid":555555,
"transactionamount":58
},
[
{
"productline":1,
"product":"apples",
"productprice":12,
"productqty":1
},
{
"productline":2,
"product":"pears",
"productprice":23,
"productqty":2
}
]
]
查看的项目:
sessionid=12345&product1=apples&productprice1=12&product1qty=1&product2=梨&productprice2=23&product2qty=3
[
{
"sessionid":12345,
"transactionid":0,
"transactionamount":0
},
[
{
"productline":1,
"product":"apples",
"productprice":12,
"productqty":1
}
]
]
结果我将能够从 JSON 解析为 SQL 表中的一致表。
到目前为止,我尝试过的只是解析字符串,但在 SQL 中创建表并不理想,因为购买次数可能会有所不同:
var string = "sessionid=12345&transactionid=555555&product1=apples&productprice1=12&product1qty=1&product2=pears&productprice2=23&product2qty=3&transactionamount=58";
function splitstring(queryString) {
var dictionary = {};
if (queryString.indexOf('?') === 0) {
queryString = queryString.substr(1);
}
var parts = queryString.split('&');
for (var i = 0; i < parts.length; i++) {
var p = parts[i];
// Step 2: Split Key/Value pair
var keyValuePair = p.split('=');
var key = keyValuePair[0];
var value = keyValuePair[1];
dec_val = decodeURIComponent(value);
final_value = dec_val.replace(/\+/g, ' ');
dictionary[key] = final_value;
}
return (dictionary);
}
console.log(splitstring(string));
提前致谢!!!
慕码人2483693
蝴蝶刀刀
相关分类