【问题标题】:How to iterate over JSON array? [closed]如何遍历 JSON 数组? [关闭]
【发布时间】:2019-04-14 14:49:52
【问题描述】:

我有这个带有多个根的 JSON 数组:

[
  {
  "issuer_ca_id": 16418,
  "issuer_name": "C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3",
  "name_value": "sub.test.com",
  "min_cert_id": 325717795,
  "min_entry_timestamp": "2018-02-08T16:47:39.089",
  "not_before": "2018-02-08T15:47:39"
  },
{
"issuer_ca_id":9324,
"issuer_name":"C=US, O=Amazon, OU=Server CA 1B, CN=Amazon",
"name_value":"marketplace.test.com",
"min_cert_id":921763659,
"min_entry_timestamp":"2018-11-05T19:36:18.593",
"not_before":"2018-10-31T00:00:00",
"not_after":"2019-11-30T12:00:00"
}
]

我想遍历它并在 Python 中打印 issuer_name 值。请问有什么解决办法吗?

【问题讨论】:

标签: python json loops


【解决方案1】:

使用json 包并加载json。假设它是内存中的字符串(而不是.json 文件):

jsonstring = """
[
  {
  "issuer_ca_id": 16418,
  "issuer_name": "C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3",
  "name_value": "sub.test.com",
  "min_cert_id": 325717795,
  "min_entry_timestamp": "2018-02-08T16:47:39.089",
  "not_before": "2018-02-08T15:47:39"
  },
{
"issuer_ca_id":9324,
"issuer_name":"C=US, O=Amazon, OU=Server CA 1B, CN=Amazon",
"name_value":"marketplace.test.com",
"min_cert_id":921763659,
"min_entry_timestamp":"2018-11-05T19:36:18.593",
"not_before":"2018-10-31T00:00:00",
"not_after":"2019-11-30T12:00:00"
}
]"""

import json
j = json.loads(jsonstring)
[item["issuer_name"] for item in j]

给予:

["C=US, O=Let's Encrypt, CN=Let's Encrypt Authority X3",
 'C=US, O=Amazon, OU=Server CA 1B, CN=Amazon']

现在,这些在我看来不像是名称,但这是分配给 issuer_name 字段的名称,所以我认为这是您必须与数据所有者讨论的内容。

如果它是一个文件,你可以按照这个基本模式进行加载:

# something like this
with open("jsonfile.json", "rb") as fp:
    j = json.load(fp) 

在此处查看文档:https://docs.python.org/3.7/library/json.html

【讨论】:

  • 这正是我想要的。非常感谢您的帮助!
  • 太棒了@W0rm。如果回复有助于解决您的问题,请将其标记为答案!
猜你喜欢
  • 2013-07-03
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 2021-03-23
相关资源
最近更新 更多