繁体   English   中英

从 JS 文件中读取 JSON 数据

[英]Reading JSON data from JS file

我正在使用 HTML 输入文件标签上传一个 JS 文件。 我正在用 Python 读取数据。 由于在我的数据中写入了 var acb_messages ,因此我无法解析它。 我想使用这个变量名来获取数据,以便我可以删除它。

var acb_messages = {"messages": [{
    "timestamp": 1475565742761,
    "datetime": "2016-10-04 12:52:22 GMT+05:30",
    "number": "VM-449700",
    "id": 1276,
    "text": "Some text here",
    "mms": false,
    "sender": false
    }
]}

如何在 Python 中解析它,然后如何使用它?

如果我在你的位置,我会尝试两种方法 -

  1. 将我的 .js 文件转换为 .json 文件,然后使用@Sandeep Lade 建议的方法。

  2. 将 .js 文件作为字符串读取,裁剪出值部分,然后按照@rahul mr 的建议使用json.loads(<cropped part>)

以下是如何实现第二个解决方案 -

import json

with open('your_js_file.js') as dataFile:
    data = dataFile.read()
    obj = data[data.find('{') : data.rfind('}')+1]
    jsonObj = json.loads(obj)

这里发生的事情是您发现首先将 .js 文件(包含需要转换为 json 的 js 对象)作为字符串读取,找到{的第一次出现和}的最后一次出现,裁剪字符串的那部分,将其加载为json。

希望这是您正在寻找的。

警告- 仅当您的 js 文件仅包含 js 对象时,代码才有效。

上面的选项是正确的,但是 JS 中的 JSON 语法可能与 Python 中的有点不同:

例子.js:

property.docs = {
    messages: {
    timestamp: 1475565742761,
    datetime: "2016-10-04 12:52:22 GMT+05:30",
    number: "VM-449700",
    id: 1276,
    text: "Some text here",
    mms: false,
    sender: false
}
};

因此,我们需要我在以下位置找到的另一项调整: 如何将原始 javascript 对象转换为 python 字典?

完整的代码应该是:

import json
import demjson

with open('example.js') as dataFile:
    data = dataFile.read()
    json_out = data[data.find('{'): data.rfind('}')+1]
    json_decode = demjson.decode(json_out)

print(json_decode)
import json
jsonfile=open("/path/to/json file")
data=json.load(jsonfile)

上面的代码将 store 将您的 json 数据存储在一个名为data的字典中。 然后您可以处理字典

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM