Python 讀取 JSON 檔案

本篇 ShengYu 介紹 Python 讀取 JSON 檔案的方法,JSON 是一種常見的輕量級資料交換格式,最初被 Web 廣泛應用,

以下 Python JSON 讀取檔案的內容分為這幾部份,

  • Python 從檔案讀取解析成 JSON
  • Python 從字串讀取解析成 JSON
  • Python 從檔案讀取解析 JSON array

那我們開始吧!

Python 從檔案讀取解析成 JSON

這邊介紹 Python 從檔案讀取解析成 JSON,假設 JSON 檔案內容長這樣

data.json
1
2
3
4
5
6
7
{
"name":"Amy",
"age":20,
"married":false,
"city":"New York",
"languages": ["English", "French"]
}

在使用要前要 import json 模組,接著將開檔完的 File 物件 f 傳給 json.load() 裡,json.load() 解析成 JSON 後回傳的變數會是 dict 類型,如果要從 JSON 形式的字串讀入的話要改用 json.loads(),詳見下一節,

python3-json-read.py
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json

with open('data.json') as f:
data = json.load(f)

print(type(data))
print(data)
print(data['name'])
print(data['age'])

輸出結果如下,

1
2
3
4
<class 'dict'>
{'age': 20, 'married': True, 'city': 'New York', 'languages': ['English', 'French'], 'name': 'Amy'}
Amy
20

Python 從字串讀取解析成 JSON

上一節是從檔案讀取解析成 JSON,這邊則是要介紹從字串讀取解析成 JSON,Python 要從 JSON 形式的字串讀入的話要用 json.loads(),我們把剛剛 data.json 檔案內容全部放入 s 字串,再把字串 s 帶入 json.loads() 解析成 JSON,輸出結果同上,

python3-json-read2.py
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json

s = '{"name":"Amy", "age":20, "married":false, "city":"New York", "languages": ["English", "French"]}'
data = json.loads(s)

print(type(data))
print(data)
print(data['name'])
print(data['age'])

Python 從檔案讀取解析 JSON array

這邊介紹 Python 從檔案讀取解析 JSON array,假設 JSON 檔案裡的 JSON array 內容長這樣

data2.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
{
"name":"Amy",
"age":20,
"married":false,
"city":"New York",
"languages": ["English", "French"]
},
{
"name": "Sam",
"age": 26,
"married": true,
"city":"Berlin",
"languages": ["English", "Dutch"]
}
]

那麼讀取進來是會由一個 list 容器來儲存 JSON 陣列的內容,再用 list 的索引去取得元素就可以了,list 裡的每個 JSON 都是 dict,

python3-json-read3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json

with open('data2.json') as f:
data = json.load(f)

print(type(data))
print(type(data[0]))
print(data[0]['name'])

for i in data:
#print(i)
print("name:" + i['name'])
print("age:" + str(i['age']))

輸出結果如下,

1
2
3
4
5
6
7
<class 'list'>
<class 'dict'>
Amy
name:Amy
age:20
name:Sam
age:26

以上就是 Python 讀取 JSON 檔案的介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
下一篇介紹 寫入 json 檔案

其他參考
json — JSON encoder and decoder — Python 3 documentation
https://docs.python.org/3/library/json.html
python - How to parse data in JSON format? - Stack Overflow
https://stackoverflow.com/questions/7771011/how-to-parse-data-in-json-format
Python Parse JSON array - Stack Overflow
https://stackoverflow.com/questions/47060035/python-parse-json-array

其它相關文章推薦
如果你想學習 Python 相關技術,可以參考看看下面的文章,
Python 新手入門教學懶人包
Python 寫檔,寫入 txt 文字檔
Python 讀取 csv 檔案
Python 寫入 csv 檔案
Python 字串分割 split
Python 取代字元或取代字串 replace
Python 讓程式 sleep 延遲暫停時間
Python 產生 random 隨機不重複的數字 list
Python PyAutoGUI 使用教學
Python OpenCV resize 圖片縮放