在Python中使用JSON轻而易举,这将使您立即入门。
Python有两种数据类型,它们共同构成了使用JSON的理想工具:字典和列表。让我们探索如何:
- 加载和编写JSON
- 在命令行上漂亮打印并验证JSON
- 使用JMESPath对JSON文档进行高级查询
1.解码JSON
Python附带了功能强大且优雅的 JSON库。它可以通过以下方式导入:
解码JSON字符串非常简单 json.loads(…) (加载字符串的简称)。
它转换为:
- 反对字典
- 数组到列表,
- 布尔值,整数,浮点数和字符串可以识别其含义,并将在Python中转换为正确的类型
- 任何 null 都将转换为Python的 None 类型
这是一个实际的例子 json.loads :
2.编码JSON
反之亦然。使用 json.dumps(…) (“转储为字符串”的缩写)将包含字典,列表和其他本机类型的Python对象转换为字符串:
这是完全相同的文档,转换回字符串!如果要使JSON文档更易被人类阅读,请使用indent选项:
3.命令行用法
JSON库也可以从命令行使用,以 验证 JSON 并进行 漂亮打印:
jq默认会漂亮地打印您的JSON
4.使用JMESPath搜索JSON
JMESPath是JSON的查询语言。它使您可以轻松地从JSON文档中获取所需的数据。如果您以前使用过JSON,您可能知道获取嵌套值很容易。
例如: doc["person"]["age"] 将在如下所示的文档中为您提供年龄的嵌套值:
但是,如果您想从一系列人员中提取所有年龄段,在这样的文档中怎么办:
我们可以编写一个简单的循环,遍历所有人员。十分简单。但是循环很慢,会给您的代码带来复杂性。这就是JMESPath进来的地方!
这个JMESPath表达式将完成工作:
它将返回一个所有年龄的数组: [38, 45, 14]。
假设您要过滤列表,仅获取名为“ erik”的人的年龄。您可以使用过滤器执行此操作:
看看这有多自然和快速?
JMESPath不是Python标准库的一部分,这意味着您需要使用pip 或 进行安装 pipenv。例如, 在虚拟环境中使用 时 :pip
您现在就可以开始尝试了!