首页 > 解决方案 > 如何在 Javascript 中解析 A​​ppsFlyer 转换数据?

问题描述

如何解析此响应:

{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_sub1and来解析它result["af_sub1"],两者都返回undefined

标签: javascriptappsflyer-cordova-sdk

解决方案


您可以先将响应转换为符合 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 上创建的代码段


推荐阅读