Python讀寫JSON數(shù)據(jù)

1. Python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON對(duì)象

json 模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。 其中兩個(gè)主要的函數(shù)是 json.dumps()json.loads() , 要比其他序列化函數(shù)庫如pickle的接口少得多。 下面演示如何將一個(gè)Python數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON對(duì)象:

import json

data = {
    'name' : 'ACME',
    'shares' : 100,
    'price' : 542.23
}

json_str = json.dumps(data)

下面演示如何將一個(gè)JSON編碼的字符串轉(zhuǎn)換回一個(gè)Python數(shù)據(jù)結(jié)構(gòu):

data = json.loads(json_str)

JSON編碼支持的基本數(shù)據(jù)類型為None,boolint,floatstr, 以及包含這些類型數(shù)據(jù)的listtupledictionary。 對(duì)于dictionary,keys需要是字符串類型(字典中任何非字符串類型的key在編碼時(shí)會(huì)先轉(zhuǎn)換為字符串)。 為了遵循JSON規(guī)范,你應(yīng)該只編碼Python的listdictionary。

2. JSON文件讀寫

如果你要處理的是文件而不是字符串,你可以使用另外的json.dump()json.load()函數(shù)來編碼和解碼JSON數(shù)據(jù)。例如:

# Writing JSON data
with open('data.json', 'w') as f:
    json.dump(data, f)

# Reading data back
with open('data.json', 'r') as f:
    data = json.load(f)

注意此處open()函數(shù)中讀寫模式的實(shí)參:在編碼JSON數(shù)據(jù)時(shí)使用'w'寫入模式,解碼JSON數(shù)據(jù)時(shí)使用'r'只讀模式。使用錯(cuò)誤的寫入模式(如'a'附加模式)會(huì)導(dǎo)致寫入文件的JSON數(shù)據(jù)格式出現(xiàn)錯(cuò)誤。此外注意寫入與讀取JSON文件的步驟(上下文管理器)應(yīng)該分開。


參考來源
[1] Python Cookbook, 3rd edition, by David Beazley and Brian K. Jones (O’Reilly). Copyright 2013 David Beazley and Brian Jones, 978-1-449-34037-7
[2] python3-cookbook中文譯本,譯者熊能,網(wǎng)址鏈接:http://python3-cookbook.readthedocs.io/zh_CN/latest/c06/p02_read-write_json_data.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是生命?當(dāng)下的每一天迎接全新的自己。每天清晨五點(diǎn)鐘堅(jiān)持打卡,總能看見清晨第一縷陽光。
    Linda溪瀾閱讀 306評(píng)論 0 0
  • 經(jīng)常不易入睡,或睡而易醒,難以復(fù)睡,或時(shí)時(shí)驚醒,睡不安寧,甚至徹夜不眠的癥狀。主要由于機(jī)體陰陽平衡失調(diào),陰虛陽盛,...
    酵素凈食閱讀 418評(píng)論 0 0
  • Q1:Lightmap在PC上顯示正常,但是轉(zhuǎn)到Android平臺(tái)上存在色差,顏色普遍偏暗。 一般來講,有兩種情況...
    此年此景閱讀 323評(píng)論 0 1
  • 這些是在CGGeometry.h里的 CGPoint、CGSize、CGRect、CGRectEdge實(shí)際上都是結(jié)...
    Niklaus_8871閱讀 1,190評(píng)論 0 0
  • 一個(gè)可萌可萌的小女生!?( ?? ? ? ?)?先來給點(diǎn)基本信息?(? ? ??)?姓名:安七的晴爺別名:晴爺...
    安七的晴爺閱讀 245評(píng)論 0 0

友情鏈接更多精彩內(nèi)容