您好我有一个json文件,想要解析它。我写下了以下代码:
import json as simplejson
import os
for filename in os.listdir('/home/Documents/test/'):
with open('/home/Documents/test/' + filename) as file:
data = simplejson.load(file)
try:
if(data['scans']['Microsoft']['detected']==True):
label = data['scans']['Microsoft']['result']
print label
except (ValueError, KeyError, TypeError):
print "JSON format error"
但是我收到了以下错误:
ValueError: Expecting property name: line 1 column 1 (char 1)
你能帮我解决问题吗?我认为因为我的文件包含unicode字符,但我不知道如何解决它。
这是我的json文件的一部分:
{u'md5': u'0a1cdc568b4da42cb7acce45834eb4ba',
u'permalink': u'https://www.virustotal.com/file/a0acc0feb1da7f571faaa7dc3b7ebcd1b856710d1f44cd6e0b57ec5a9bc70038/analysis/1383102973/',
u'positives': 42,
u'resource': u'0A1CDC568B4DA42CB7ACCE45834EB4BA',
u'response_code': 1,
u'scan_date': u'2013-10-30 03:16:13',
u'scan_id': u'a0acc0feb1da7f571faaa7dc3b7ebcd1b856710d1f44cd6e0b57ec5a9bc70038-1383102973',
u'scans': {u'AVG': {u'detected': True,
u'result': u'FakeAV.AFQQ',
u'update': u'20131029',
u'version': u'13.0.0.3169'},
u'Agnitum': {u'detected': True,
u'result': u'FraudTool.Agent!dfdcHBsNM3c',
u'update': u'20131029',
u'version': u'5.5.1.3'},
u'AhnLab-V3': {u'detected': True,
u'result': u'Trojan/Win32.FakeAV',
u'update': u'20131029',
u'version': u'2013.10.30.01'},
u'AntiVir': {u'detected': True,
u'result': u'TR/Winwebsec.bamnx',
u'update': u'20131030',
u'version': u'7.11.110.26'},
u'Antiy-AVL': {u'detected': False,
u'result': None,
u'update': u'20131029',
u'version': u'2.0.3.7'},
答案 0 :(得分:1)
您没有JSON数据。你有Python文字(定义字典,布尔值,字符串和None
对象的Python语法,就像你在Python源代码中找到它们一样)。
JSON数据不对字符串使用单引号,也不以u
为前缀,但Python 2 unicode
对象为。 JSON使用null
,其中Python使用None
,false
和true
,其中Python使用False
和True
。
修复创建文件的过程(它看起来像pprint
模块将产生的输出)以实际生成JSON,或者使用ast.literal_eval()
function将字符串安全地转换回Python对象。
如果您使用的是the scripts from this repository,请知道--jsondump
开关不会产生JSON输出。脚本将API从API加载到Python结构中,并且交换机仅将该结构转储到文件作为Python文字:
if jsondump == True:
jsondumpfile = open("VTDL" + md5 + ".json", "w")
pprint(it, jsondumpfile)
jsondumpfile.close()
print "\n\tJSON Written to File -- " + "VTDL" + md5 + ".json"
请注意那里的pprint()
电话。如果您需要将JSON加载到您自己的Python代码中,请编写自己的API调用,而不是依赖此脚本。