Python 如何循环通过JSON对象?

Python 如何循环通过JSON对象?,python,json,python-2.7,Python,Json,Python 2.7,我想在Python中循环遍历任意JSON对象,并获取所有值。我不知道JSON对象是什么样子的。我只想遍历所有元素。也就是通过子对象和列表。我现在从互联网上获取了一个任意的JSON对象进行测试。但它也可以是任何其他JSON对象。目前我是这样尝试的: def printJSONVals(json_object): it = iter(json_object) n = json_object[next(it)] while n is not None: pri

我想在Python中循环遍历任意JSON对象,并获取所有值。我不知道JSON对象是什么样子的。我只想遍历所有元素。也就是通过子对象和列表。我现在从互联网上获取了一个任意的JSON对象进行测试。但它也可以是任何其他JSON对象。目前我是这样尝试的:

def printJSONVals(json_object): 
    it = iter(json_object)
    n = json_object[next(it)]
    while n is not None:
        print n
        n = json_object[next(it)]

json_obj = json.loads('{ "city" : "AGAWAM", "loc" : [ -72.622739, 42.070206 ], "pop" : 15338, "state" : "MA", "_id" : "01001"}')

printJSONVals(json_obj)
不幸的是,这不起作用,因为我将列表
“loc”
作为列表而不是单个值返回。是否有一种方法可以在JSON对象中循环,而不考虑嵌套的深度,并始终将各个键的值存储在变量
n

因此,我希望变量
n
始终包含键的值。不管对象嵌套的深度如何。因此,我希望这里的输出:

AGAWAM
-72.622739
42.070206
15338
MA
01001
我想稍后在二维数组中编写这些。但这并不重要。如果我能够独立于嵌套输出值就足够了

我使用Python版本2.7.17


谢谢

那么,您可以使用
dict
键来计算祖先的路径

导入json
def print_json(对象,父对象=无):
如果存在(对象,列表):
对于obj中的儿童:
对于路径,print_json中的项(子项、父项):
屈服路径,项目
elif isinstance(obj,dict):
对于键,在Python3的obj.iteritems()中为child:#items()
如果父项不是其他父项,则子项路径=[key]
对于路径,print_json中的项(子,子路径):
屈服路径,项目
其他:
产量亲本
以您为例,您有:

json_obj=json.loads(
“{”城市“:”阿加瓦姆“,”loc“:[-72.622739,42.070206],”流行“:”15338,“州“:”马“,”id“:”01001”}”
)
对于路径,print_json(json_obj)中的项:
打印(路径“:”,项目)
结果是:

['city']:阿加瓦姆
[loc']:-72.622739
['loc']:42.070206
['pop']:15338
['state']:MA
[“你的身份证]:01001
另一个例子:

json_obj=json.loads(
“{”城市“:”阿加瓦姆“,”loc“:{”类型“:”int“,”值“:”16}”
)
你会得到:

['city']:阿加瓦姆
['loc','type']:int
['loc','value']:16

你实际上想解决什么问题?我想创建一个二维数组,它总是包含以下数据:(“key”、“parent”、“val”)你说的“parent”是什么意思?
json_obj
不是一个“json对象”。这是一个
命令。只要返回
JSON.loads
,JSON就不再相关。