gpt4 book ai didi

Javascript - 非结构化 URL 的 URL 解码

转载 作者:行者123 更新时间:2023-12-01 01:53:00 27 4
gpt4 key购买 nike

使用decodeURIComponent 解码后,我的 URL 看起来像这样

https://secretStar.22.test.com/l/{"mode":"test","app":"revenue:app","param2":1,"loaded":{"APPLICATION@markup://revenue:app":"unique_identifier"},"pathPrefix":"","xx":1}/script22.js

现在,我想从此 URL 中提取一些详细信息,例如:

mode = test
app = revenue:app
param2 = 1
appMarkupRevenueApp = unique identifier
scriptName = script.js

如果这些值是 qs 参数,我可以使用 qs 参数提取它。我能够通过编写一个拆分和连接然后再次拆分的函数来提取信息,但是当从 csv 文件中超过 4k 的 URL 中提取这些参数时,这不是很有效。

有没有更好的方法来提取这些?我可以想到正则表达式,但我对此不太熟悉,无法让它发挥作用。

最佳答案

您可以通过匹配嵌入的 JSON,然后将其转换为对象来实现此目的,也许可以使用如下所示的内容:

JSON.parse(foo.match(/({.+})[^}]+/)[1])

正则表达式 /({.+})[^}]+/ 通过匹配 { 后跟任何内容,后跟 来创建一个组} 然后仅当该组后面跟着不是 }

的内容时才匹配

JSON 正在解析第一个匹配的组。

有一个问题,我不确定是由于您的问题有拼写错误还是与 decodeURIComponent 有关:

在您的预期输出中,您有:

appMarkupRevenueApp = unique identifier

但是您的数据有:

"APPLICATION@markup://revenue:app":"unique_identifier"

这是一个相当不匹配的情况,并且不明显哪个是正确的

小演示:

var string = 'https://secretStar.22.test.com/l/{"mode":"test","app":"revenue:app","param2":1,"loaded":{"APPLICATION@markup://revenue:app":"unique_identifier"},"pathPrefix":"","xx":1}/script22.js';

var data = JSON.parse(string.match(/({.+})[^}]+/)[1]);

for(key of Object.keys(data)) { console.log(`${key}: ${data[key]}`) }

关于Javascript - 非结构化 URL 的 URL 解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276116/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com