Python .get 嵌套 JSON 值
原创
对于长期使用python写代码的我来说,经常在Python代码中,使用
.get
方法来访问嵌套在JSON结构中的值。我们知道JSON(JavaScript Object Notation)是一种常见的数据交换格式,它可以包含嵌套的键值对。但是在我们使用总该如何获取嵌套对象中的值呢?
1、问题背景
在 Python 中,可以使用 .get() 方法从 JSON 对象中获取值。当 JSON 对象中嵌套了其他 JSON 对象时,如何获取嵌套对象中的值呢?
例如,以下 JSON 对象中包含了一个名为 "product" 的嵌套对象,该对象又包含了几个子对象。
{
"title": "Test prod",
"leafPage": true,
"type": "product",
"product": {
"title": "test product",
"offerPrice": "$19.95",
"offerPriceDetails": {
"amount": 19.95,
"text": "$19.95",
"symbol": "$"
"media": [
"link": "http://www.test.com/cool.jpg",
"primary": true,
"type": "image",
"xpath": "/html[1]/body[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/a[1]/img[1]"
"availability": true
"human_language": "en",
"url": "http://www.test.com"
}
如果要获取 "product" 对象中的 "offerPrice" 值,可以使用以下代码:
entry.get("product").get("offerPrice")
这样就可以获取到 "offerPrice" 的值 "$19.95"。
2、解决方案
但是,如果 JSON 对象中的嵌套对象不是直接使用键值对表示,而是使用数组表示,则获取嵌套对象中的值就会变得更加复杂。
例如,以下 JSON 对象中包含了一个名为 "media" 的嵌套数组,该数组中包含了多个子对象。
{
"title": "Test prod",
"leafPage": true,
"type": "product",
"product": {
"title": "test product",
"offerPrice": "$19.95",
"offerPriceDetails": {
"amount": 19.95,
"text": "$19.95",
"symbol": "$"
"media": [
"link": "http://www.test.com/cool.jpg",
"primary": true,
"type": "image",
"xpath": "/html[1]/body[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/a[1]/img[1]"
"link": "http://www.test.com/cool2.jpg",
"primary": false,
"type": "image",
"xpath": "/html[1]/body[1]/div[1]/div[3]/div[2]/div[1]/div[1]/div[1]/div[1]/a[2]/img[1]"
"availability": true
"human_language": "en",
"url": "http://www.test.com"
}
如果要获取 "media" 数组中的第一个子对象中的 "link" 值,可以使用以下代码:
entry.get("product", {}).get("media", [])[0].get("link")
这样就可以获取到第一个子对象的 "link" 值 " http://www.test.com/cool.jpg "。
代码示例
import json
# 读取 JSON 文件
with open('data.json', 'r') as f:
data = json.load(f)
# 获取 "product" 对象中的 "offerPrice" 值
offer_price = data.get("product", {}).get("offerPrice")