javascript - 如何在 Javascript 中解析 AppsFlyer 转换数据?
问题描述
如何解析此响应:
{af_sub1=1.5,af_deeplink=true,campaign=None,media_source=None,install_time=2018-05-08 03:34:34,af_status=Non-organic,path=,scheme=,host=}
作为以下代码的结果:
var onSuccess = function(result) {
console.log(result);
};
window.plugins.appsFlyer.initSdk(options,onSuccess,onError);
它看起来像 JSON,但是使用=
而不是:
,然后我尝试使用result.af_sub1
and来解析它result["af_sub1"]
,两者都返回undefined
解决方案
您可以先将响应转换为符合 JSON,然后使用JSON.parse
. 请参阅下面的片段。请注意,所有数据类型都是字符串,您需要自己处理数据类型转换。即af_deeplink
不会是布尔值。
let result = "{af_sub1=1.5, af_deeplink=true, campaign=None, media_source=None,install_time=2018-05-08 03:34:34, af_status=Non-organic, path=, scheme=, host=}";
let parseResponse = (res) => JSON.parse(res.replace(/([^,\s\{=]+)=([^,]*)(?=,|\})/gi, '"$1" : "$2"'));
let obj = parseResponse(result);
console.log(typeof obj); // object
console.log(obj.af_sub1); // 1.5
PS:有关使用的正则表达式的详细说明,请参阅我在 regex101.com 上创建的代码段