Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将JavaScript解析为JSON?_Javascript_Python_Html_Json - Fatal编程技术网

如何在python中将JavaScript解析为JSON?

如何在python中将JavaScript解析为JSON?,javascript,python,html,json,Javascript,Python,Html,Json,我有一个html页面,其中包含一组项目的整个产品列表。由于页面的大小,我无法上传。不幸的是,这些产品位于脚本部分,更具体地说是位于一个变量中 起初我认为这是简单的JSON,但是,在多次尝试使用JSON.loads和pyjson5.loads解码响应后,我认为这或多或少是该语言的语法 以下是代码片段: window.INIT_STATE = 'configuration': {'navigationData': {'catalog': {'id': 1, 'active': 1, 'tenant'

我有一个html页面,其中包含一组项目的整个产品列表。由于页面的大小,我无法上传。不幸的是,这些产品位于脚本部分,更具体地说是位于一个变量中

起初我认为这是简单的JSON,但是,在多次尝试使用JSON.loads和pyjson5.loads解码响应后,我认为这或多或少是该语言的语法

以下是代码片段:

window.INIT_STATE = 'configuration': {'navigationData': {'catalog': {'id': 1, 'active': 1, 'tenant': 'pyStore', 'type': 'catalog', 'name': 'Initial catalog', 'version': '2021-06-02T16:26:56.446Z', 'nav': 
我仍然不能完全确定这是JavaScript还是JSON,但我不知道如何解析这些数据,因为分隔符或引号似乎总是有问题


是否有任何有效的函数至少可以帮助我识别/解析此代码?

您拥有的是一个可以序列化为JSON数据的对象,但它不是JSON本身。让我解释一下区别

以下代码段是Javascript

这是一个可以序列化为JSON的Javascript对象示例

{x:2}
以下字符串是JSON格式数据的示例。(请注意,JSON数据本身只是一个以非常特定的方式格式化的字符串。JSON始终只是一个字符串,就像XML一样)

“{“x”:2}”
下面是一个将Javascript对象序列化为JSON格式的示例(即,我们将对象转换为JSON字符串)

>JSON.stringify({x:2})
“{“x”:2}”
看到区别了吗?你会发现很多人在网上把JSON可序列化数据称为“JSON”(这很好,有时人们会懒散地说话,或者不完全理解),但从技术上讲,这不是JSON,只是数据可以在需要时转换成JSON(例如,一个带有函数的对象是不可JSON序列化的——你真的不能将函数编码成字符串)

话虽如此,您得到的只是一个Javascript片段,如果执行该片段,将把一个JSON可序列化对象放入一个变量中。然而,此源代码本身并不包含格式正确的JSON数据(例如,引号必须是双引号-JSON中不允许使用单引号)因此,任何JSON解析实用程序都无法对其进行操作

不幸的是,您将不得不手工解析此数据,这可能需要一些工作来完成。工作量取决于您的需要。如果您只想从该数据中提取一个特定属性,则可能只需对相应的键执行正则表达式搜索,然后提取值(不过,您必须知道您要查找的密钥不会出现在对象中的任何其他位置)

更新:

如果您只想提取JSON数据并将其保存到其他地方,那么最好使用Javascript而不是python,因为您要处理的是Javascript源代码

编辑HTML文件并取出除此JSON可序列化结构之外的所有内容,将
window.INIT_STATE
更改为just
const INIT_STATE
,并在文件末尾添加以下内容:

const INIT_STATE=…您庞大的JSON可序列化结构。。。
require('fs').writeFileSync('./output.json',json.stringify(INIT_状态),'utf-8')
将html文件重命名为具有“.js”文件扩展名


您需要安装node才能运行此操作。安装node后,请使用
node yourFile.js
运行您的文件。它应该在同一目录中创建一个名为“output.json”的文件。

正是我想要避免的,数据量很大。不要认为我能够处理它。感谢您的回复,这非常有帮助。