我正在尝试打印我的json内容。我知道如何只打印键和值,但我也希望能够访问键中的对象。这是我的代码:
json_mini = json.loads('{"one" : {"testing" : 39, "this": 17}, "two" : "2", "three" : "3"}')
for index, value in json_mini.items():
print index, value
if value.items():
for ind2, val2 in value.items():
print ind2, val2
这给了我这个错误:AttributeError: 'unicode' object has no attribute 'items'
如何迭代它?所以我可以对每个单独的键和值进行一些处理吗?
答案 0 :(得分:2)
递归示例:
import json
def func(data):
for index, value in data.items():
print index, value
if isinstance(value, dict):
func(value)
json_mini = json.loads('{"one" : {"testing" : 39, "this": 17}, "two" : "2", "three" : "3"}')
func(json_mini)
答案 1 :(得分:1)
这是一种在Python 2和3中有效的递归方式,它不使用isinstance()
。它使用异常来确定给定元素是否是子对象。
import json
def func(obj, name=''):
try:
for key, value in obj.items():
func(value, key)
except AttributeError:
print('{}: {}'.format(name, obj))
json_mini = json.loads('''{
"three": "3",
"two": "2",
"one": {
"this": 17,
"testing": 39
}
}''')
func(json_mini)
输出:
this: 17
testing: 39
three: 3
two: 2