JSONファイルから特定のフィールドを抽出する方法
JSONPath かコードを書いてパースすることで、指定したフィールドを抽出すればよい。
JSONPathを使用して指定のフィールドを抽出する手順:
- JSONPathライブラリ(例:jsonpath-ng、jsonpath_rw)をインポートします。
- JSONファイルをパースしてJSONオブジェクトに変換する。
- JSONPath式を使用して指定のフィールドを抽出します。
- アーカイブの種類によっては抽出した結果の取得方法が異なります。
たとえば、以下の JSON ファイルの内容があると想定します:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"phoneNumbers": [
{
"type": "home",
"number": "555-1234"
},
{
"type": "work",
"number": "555-5678"
}
]
}
jsonpath_ngライブラリを使用すると、「name」と「phoneNumbers」フィールドの値を取得できます。
import json
from jsonpath_ng import parse
# 解析 JSON 文件并转换为 JSON 对象
with open('data.json') as json_file:
data = json.load(json_file)
# 提取 "name" 字段的值
name_expr = parse("$.name")
name_result = [match.value for match in name_expr.find(data)]
print(name_result) # 输出: ['John']
# 提取 "phoneNumbers" 字段的值
phone_expr = parse("$.phoneNumbers[*].number")
phone_result = [match.value for match in phone_expr.find(data)]
print(phone_result) # 输出: ['555-1234', '555-5678']
Python の JSON モジュールなどの JSON 解析ライブラリを使って JSON ファイルを解析し、ディクショナリインデックスで特定のフィールドの値を取得することもできます。
たとえば、以下の JSON ファイルの内容があるものとします。
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"phoneNumbers": [
{
"type": "home",
"number": "555-1234"
},
{
"type": "work",
"number": "555-5678"
}
]
}
Python の json モジュールを使用して「name」と「phoneNumbers」フィールドの値を取り出す
import json
# 解析 JSON 文件并转换为 JSON 对象
with open('data.json') as json_file:
data = json.load(json_file)
# 提取 "name" 字段的值
name_result = data["name"]
print(name_result) # 输出: 'John'
# 提取 "phoneNumbers" 字段的值
phone_result = [entry["number"] for entry in data["phoneNumbers"]]
print(phone_result) # 输出: ['555-1234', '555-5678']
シナリオと要件に基づいて、JSONPathを使用するかコードを記述して解析するかを選択できます。