【发布时间】:2021-05-15 20:00:05
【问题描述】:
处理一些讨厌的 JSON。我正在使用 json.load 写入文件并将其存储为 dict 类型,打印在下面。在 python 中,我将如何获取仅在“false_value”之后开始的“维度”值的列表(因为它们的第一个维度值实际上不是我想要的值)。
我尝试了一种 hacky 方式,但感觉有人可能对如何以更有说服力的方式做到这一点有看法。
目标,列出所有维度值(除第一个之外),例如 ('100', '121' ...)
{
"reports": [
{
"columnHeader": {
"dimensions": [
"ga:clientId"
],
"metricHeader": {
"metricHeaderEntries": [
{
"name": "blah",
"type": "INTEGER"
}
]
}
},
"data": {
"rows": [
{
"dimensions": [
"false_value"
],
"metrics": [
{
"values": [
"2"
]
}
]
},
{
"dimensions": [
"100"
],
"metrics": [
{
"values": [
"2"
]
}
]
},
{
"dimensions": [
"121"
],
"metrics": [
{
"values": [
"1"
]
}
]
},
{
"dimensions": [
"1212"
],
"metrics": [
{
"values": [
"1"
]
}
]
}, ],
"totals": [
{
"values": [
"10497"
]
}
],
"rowCount": 9028,
"minimums": [
{
"values": [
"0"
]
}
],
"maximums": [
{
"values": [
"9"
]
}
],
"isDataGolden": true
},
"nextPageToken": "1000"
}
]
}
【问题讨论】:
-
我相信您可以遍历所有键/子键/值并将它们转储到列表中。见这里:stackoverflow.com/questions/45974937
-
您的意思是 True 而不是 true(即 Python Boolean 的 True/False)?
-
@DarrylG 这是 JSON,不是 Python 代码。
-
一个在条件中使用
isinstance()的简单递归函数应该可以解决问题。 -
@DannyVarod--当 OP 说“它存储的是 dict 类型,打印在下面”时,我假设 OP 显示为字典。如果我们将其视为字符串,那么 json.loads(...) 会给出结构错误(这也是由字符串的 json lint 验证器引发的)。如果将 true 更改为 True,则它可以作为字典使用。
标签: python dictionary