python - How to iterate over JSON array?
问题描述
I have this JSON array with multiple roots:
[
{
"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"
}
]
I want to iterate over it and print issuer_name
values in Python. Any solution, please?
解决方案
使用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)
推荐阅读
- python - Python Django 管理员在删除类时出错
- objective-c - 如何用颜色填充 vImage 缓冲区 - Cocoa Objective C
- php - 根据分配的标签添加自定义类
- azure - 将 Azure 批处理集群设置为在特定时间运行
- python - Django 路由 - 空路径与这些中的任何一个都不匹配
- oracle - 是否有直接的方法将触发器重新定位到不同的表
- c# - 如何使用 C# 部署 Kubernetes yaml
- c++ - C++ 自定义范围类型 MSVC 可以编译,但 G++ 不能
- javascript - 如何删除 Highcharts 中单个图例的图例符号?
- javascript - 使用 localStorage 持久化数据 - React.js