【问题标题】:Javascript to fetch json from unordered dataJavascript从无序数据中获取json
【发布时间】:2022-10-06 01:03:18
【问题描述】:

我在脚本代码中有以下输入代码,它就像一个字符串

输出应在下面作为 JSON 对象并提取标志和首选项对象。需要使用正则表达式或任何其他方式的解决方案

标志 = { \"onFlag\" : true, \"offFlag : false } 偏好 = { \"onPreference\" : true, \"offPreference : false }

  • 您可以直接使用__LOADED_STATE__.context.flags 获取flags 和__LOADED_STATE__.context.Preference 获取Preference。
  • 整个脚本标签在 api 中以字符串形式出现
  • LOADED_STATE不是正确的 JSON 对象。 onFlag: false 缺少双引号。它是正确的输出还是您缺少双引号?
  • 我错过了双引号

标签: javascript html arrays json object


【解决方案1】:

您可以使用正则表达式提取脚本标签内的数据,然后解析 javascript 中的内容以生成 JSON。

const regex = /<script[^>]+>(.*?)<\/script>/gs;
const str = `<script type="text/javascript">
window.__getRoute__=function() {
console.log('hi');
}

window.__LOADED_STATE__ = {
"context": {
    "flags": {"onFlag": true, "offFlag": false},
    "Preference": {"onPreference": true, "offPreference": false}
}
}
</script>`;
const m = regex.exec(str);
const json = new Function('var window={}; ' + m[1] + ' return window.__LOADED_STATE__')();

console.log(json.context.flags);
console.log(json.context.Preference);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 2010-10-24
    • 1970-01-01
    • 2013-07-31
    • 2013-11-18
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多