我有一个smaple.json如下:
{"Detail":[
{
"DocType":"txt",
"Name":"hello.txt",
}
]}
我需要将值设置为“名称”字段。我在我的剧本中尝试如下:
file="c:/sample.json"
for list in file:
if (str(list['Detail'])=='None'):
print("Do nothing")
else:
ana = list['Detail']
val = (str(ana)[1:-1])
print val
print val['Name']
我输出为:
{"DocType":"txt","Name":"hello.txt"}
error:print (ana['Name'])
TypeError: string indices must be integers
那么我做错了怎样才能获得“名称”字段的详细信息。
答案 0 :(得分:2)
您可以使用import json
json_path = "c:\\sample.json"
with open(json_path) as json_file:
json_dict = json.load(json_file)
name = json_dict['Detail'][0]['Name']
库:
new
答案 1 :(得分:0)
错误出现在此行print val['Name']
。由于val
是str
类型,因此您无法在密钥基础上进行查找。
你应该做
ana[0]['Name']
>>> 'hello.txt'
答案 2 :(得分:0)
使用json
库。
import json
with open('sample.json', 'r') as f:
content = json.load(f)
name = content['Detail'][0]['Name']
答案 3 :(得分:0)
请参阅json库[https://docs.python.org/2/library/json.html]
上的以下链接/代码
>>> import json
>>> with open('test.json','r') as e:
... data = json.loads(e.read())
...
>>> data
{u'Detail': [{u'DocType': u'txt', u'Name': u'hello.txt'}]}
>>> data['Detail'][0]['Name']
u'hello.txt'
>>>