从JS文件读取JSON数据

5

我正在使用HTML输入文件标签上传一个JS文件。我在Python中读取数据。由于我的数据变量中写有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
请展示你已经尝试过的内容和所需输出。 - Van Peer
3个回答

8
如果我在你的位置,我会尝试两种方法 -
  1. 将我的.js文件转换为.json文件,然后使用@Sandeep Lade建议的方法。

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

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

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

这里发生的情况是,您首先将包含需要转换为JSON的JS对象的.js文件作为字符串读取,找到第一个{和最后一个}的出现,裁剪该部分字符串,然后将其作为JSON加载。
希望这正是您所寻找的。
警告 - 代码仅在您的js文件仅包含js对象时才有效。

2

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

example.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)

-1
import json
jsonfile=open("/path/to/json file")
data=json.load(jsonfile)

以上代码将把您的JSON数据存储在名为data的字典中。随后,您可以处理该字典。


1
这段代码无法在原帖提供的示例中运行,因为它是Javascript。 - Cesar Moore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接