Javascript-非结构化URL的URL解码
我有一个URL,在使用decodeURIComponent解码后看起来像这样Javascript-非结构化URL的URL解码,javascript,string,decodeuricomponent,Javascript,String,Decodeuricomponent,我有一个URL,在使用decodeURIComponent解码后看起来像这样 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 =
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提取这些参数时,效率不是很高
有更好的方法提取这些吗?我可以想到regex,但我对它不太熟悉,因此无法使用它。您可以通过匹配嵌入的JSON,然后将其转换为一个对象来实现这一点,也许可以使用以下类似的方法:
JSON.parse(foo.match(/({.+})[^}]+/)[1])
正则表达式/({.+})[^}]+/
通过匹配一个{
后面跟任何东西,后面跟}
来创建一个组,然后仅当组后面跟的不是}
的东西时才匹配
JSON正在解析第一个匹配的组
有一个问题,我不确定是因为您的问题有打字错误还是与decodeURIComponent
有关:
在您的预期输出中,您有:
appMarkupRevenueApp = unique identifier
但是,您的数据有:
"APPLICATION@markup://revenue:app":"unique_identifier"
这是一个很大的不匹配,不清楚哪一个是正确的
小型演示:
var字符串class='1〕https://secretStar.22.test.com/l/{“模式”:“测试”,“应用”:“收入:应用”,“参数2”:1,“加载”:{”APPLICATION@markup://收入:应用程序“:”唯一标识符“}”,路径前缀“:”,“xx”:1}/script22.js';
var data=JSON.parse(string.match(/({.+})[^}]+/)[1]);
对于(key of Object.keys(data)){console.log(`${key}:${data[key]}')}
您可以通过匹配嵌入的JSON,然后将其转换为一个对象来实现这一点,也许可以使用以下类似的方法:
JSON.parse(foo.match(/({.+})[^}]+/)[1])
正则表达式/({.+})[^}]+/
通过匹配一个{
后面跟任何东西,后面跟}
来创建一个组,然后仅当组后面跟的不是}
的东西时才匹配
JSON正在解析第一个匹配的组
有一个问题,我不确定是因为您的问题有打字错误还是与decodeURIComponent
有关:
在您的预期输出中,您有:
appMarkupRevenueApp = unique identifier
但是,您的数据有:
"APPLICATION@markup://revenue:app":"unique_identifier"
这是一个很大的不匹配,不清楚哪一个是正确的
小型演示:
var字符串class='1〕https://secretStar.22.test.com/l/{“模式”:“测试”,“应用”:“收入:应用”,“参数2”:1,“加载”:{”APPLICATION@markup://收入:应用程序“:”唯一标识符“}”,路径前缀“:”,“xx”:1}/script22.js';
var data=JSON.parse(string.match(/({.+})[^}]+/)[1]);
对于(key of Object.keys(data)){console.log(`${key}:${data[key]}')}
@A-D不确定appMarkupRevenue,wierd正在进行某些操作是的,loaded返回一个对象,我可以从中提取值。@A-D不确定appMarkupRevenue,wierd正在进行某些操作是的,loaded返回一个对象,我可以从中提取值。