当我尝试解析JSON转储时,我收到此属性错误
Traceback (most recent call last):
File "Security_Header_Collector.py", line 120, in <module>
process(sys.argv[-1])
File "Security_Header_Collector.py", line 67, in process
server_details = json.load(header_final)
File "/usr/lib/python2.7/json/__init__.py", line 274, in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
脚本:
finalJson[App[0]] = headerJson
header_final=json.dumps(finalJson,indent=4)
#print header_final
#json_data=open(header_final)
server_details = json.load(header_final)
with open("Out.txt",'wb') as f :
for appid, headers in server_details.iteritems():
htypes = [h for h in headers if h in (
'content-security-policy', 'x-frame-options',
'strict-transport-security', 'x-content-type-options',
'x-xss-protection')]
headers='{},{}'.format(appid, ','.join(htypes))
f.write(headers+'\n')
f.close()
答案 0 :(得分:3)
json.dumps
返回一个JSON格式的字符串,但json.load
期望得到类似文件的对象,而不是字符串。
解决方案:在代码中使用json.loads
代替json.load
答案 1 :(得分:0)
您的代码
header_final=json.dumps(finalJson,indent=4)
会给你一个字符串,
您必须使用json.loads
将字符串转换为 json 。
答案 2 :(得分:0)
json.load - 用于文件/对象 json.loads - 用于字符串或数组元素。
您也可以考虑立即以HEREDOC格式化形式创建整个JSON,然后应用转义 - 这样可以更轻松地验证JSON格式。