0

如何解析此响应:

{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

4

1 回答 1

0

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

于 2018-05-08T14:25:20.597 回答