如何使用python正确打印json响应
我有如下json数组 payload.json如何使用python正确打印json响应,python,django,Python,Django,我有如下json数组 payload.json {"provision":"provision section 1", "subsets": [{"item":"milk"},{"payments": [{"price": "170 usd"}]}, {"item":"sugar"},{"payments": [{"price": "70 usd"}]}, {"item":"tea"},{"payment
{"provision":"provision section 1",
"subsets": [{"item":"milk"},{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},{"payments": [{"price": "70 usd"}]},
{"item":"tea"},{"payments": [{"price": "90 usd"}]}]}
下面是我用来获取json响应的代码
import json
import requests
r = requests.get('http://localhost/payload.json')
stat=r.status_code
head=r.headers['content-type']
encode=r.encoding
texting=r.text
result=r.json()
print(stat)
print(head)
print(texting)
print(result)
我可以在json中成功地获得结果
我的要求:
如何成功循环打印出准备金、项目和价格的值。
如果我尝试类似于
print(result.provision)
,它将显示错误dict对象没有属性provision此时您不再有JSON对象,JSON只是服务器和您之间传输的方式r.json()
将其翻译成Python字典
{"provision":"provision section 1",
"subsets": [{"item":"milk"},{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},{"payments": [{"price": "70 usd"}]},
{"item":"tea"},{"payments": [{"price": "90 usd"}]}]}
您可以使用例如result['provision']
访问Python字典的键,并可以打印该键
也就是说,由于您还使用Django标记了它,所以在Django模板中,您仍然会使用
result.provision
;它尝试了几件事,直到得到一个可以打印的结果,包括结果是一个字典并提供它的一个键的情况。在这一点上,你不再有JSON对象,JSON只是它在服务器和你之间传输的方式r.json()
将其翻译成Python字典
您可以使用例如result['provision']
访问Python字典的键,并可以打印该键
也就是说,由于您还使用Django标记了它,所以在Django模板中,您仍然会使用
result.provision
;它会尝试几件事,直到得到可以打印的结果,包括结果是字典并提供其密钥的情况。您得到的错误:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
dict对象没有属性规定
原因是:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
因为dict本身没有任何属性
同时:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
正如@RemcoGerlich所述,既然它是一个dict,您可以通过以下方式访问它的Elemenet:
result = {"provision":"provision section 1",
"subsets": [{"item":"milk"},{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},{"payments": [{"price": "70 usd"}]},
{"item":"tea"},{"payments": [{"price": "90 usd"}]}]}
print(result['provision'])
print(result['subsets'])
或
for k,v in result.items():
print(k,v)
输出:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
编辑:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
由于目录
包含带有列表的元素:
result = {"provision":"provision section 1",
"subsets": [
{"item":"milk"},
{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},
{"payments": [{"price": "70 usd"}]},
{"item":"tea"},
{"payments": [{"price": "90 usd"}]}
]
}
假设您想要获取子集中的第一个元素:
print(result.get('subsets')[0]) # {'item': 'milk'}
何处为
print(result.get('subsets')[0].values()) # dict_values(['milk'])
您得到的错误:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
dict对象没有属性规定
原因是:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
因为dict本身没有任何属性
同时:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
正如@RemcoGerlich所述,既然它是一个dict,您可以通过以下方式访问它的Elemenet:
result = {"provision":"provision section 1",
"subsets": [{"item":"milk"},{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},{"payments": [{"price": "70 usd"}]},
{"item":"tea"},{"payments": [{"price": "90 usd"}]}]}
print(result['provision'])
print(result['subsets'])
或
for k,v in result.items():
print(k,v)
输出:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
编辑:
provision provision section 1
subsets [{'item': 'milk'}, {'payments': [{'price': '170 usd'}]}, {'item': 'sugar'}, {'payments': [{'price': '70 usd'}]}, {'item': 'tea'}, {'payments': [{'price': '90 usd'}]}]
由于目录
包含带有列表的元素:
result = {"provision":"provision section 1",
"subsets": [
{"item":"milk"},
{"payments": [{"price": "170 usd"}]},
{"item":"sugar"},
{"payments": [{"price": "70 usd"}]},
{"item":"tea"},
{"payments": [{"price": "90 usd"}]}
]
}
假设您想要获取子集中的第一个元素:
print(result.get('subsets')[0]) # {'item': 'milk'}
何处为
print(result.get('subsets')[0].values()) # dict_values(['milk'])
在DirtyBit,感谢您的回复。请告诉我如何获取项目和价格的值。正如你所看到的,我们有牛奶、茶、糖,价格有170美元、70美元、90美元。我尝试过这个代码,但没有运气#子集是一个切片,所以你必须在结果['Subsets]:print(v['item'])#在子集中,付款也是s在v['payments']:print(v['price'])@nancymoreeprint(结果['Subsets'][0]。value()
应该在DirtyBit给你milk
,谢谢你的回复。请告诉我如何获取项目和价格的值。正如你所看到的,我们有牛奶、茶、糖,价格有170美元、70美元、90美元。我尝试过这个代码,但没有运气#子集是一个切片,所以你必须在结果['Subsets]:print(v['item'])#在子集中,付款也是s在v['payments']:print(v['price'])@nancymoreeprint(结果['Subsets'][0]。values())
应该在RemcoGerlich给你milk
,谢谢你的回复。现在,我可以得到价值的规定。请告诉我如何获取项目和价格的值。正如你所看到的,我们有牛奶、茶、糖,价格有170美元、70美元、90美元。我尝试过这段代码,但运气不好#子集是一个切片,所以你必须在结果['Subsets]:print(v['item'])中为v循环它#在子集中,付款也是s在v['payments']:print(v['price'])@nancymoree:对于一个so问题来说,这一切都有点过分了,如果我的答案,特别是DirtyBit的答案还不够,那么我认为你真的应该花更多的时间学习Python教程,熟悉字典、列表、for循环等等。在RemcoGerlich,感谢你的回复。现在,我可以得到价值的规定。请告诉我如何获取项目和价格的值。正如你所看到的,我们有牛奶、茶、糖,价格有170美元、70美元、90美元。我尝试过这段代码,但运气不好#子集是一个切片,所以你必须在结果['Subsets]:print(v['item'])中为v循环它#在子集中,付款也是s在v['payments']:print(v['price'])@nancymoree:对于一个so问题来说,这一切都有点过分了,如果我的答案,特别是DirtyBit的答案还不够,那么我认为您真的应该花更多的时间学习Python教程,熟悉字典、列表、for循环等等。