首頁>技術>

JSON(全稱:JavaScript Object Notation) 是一種輕量級的資料交換格式,它的結構簡潔、層次清晰也沒有xml那麼多標籤描述讓檔案更加小巧且解析速度更快。非常適合做網路傳輸的資料格式,不僅可以有效地提升網路傳輸效率也可以降低頻寬節約成本。所以我們在做開發的時候都更傾向於選擇JSON來交換資料,這樣對接起來方便也可以提高我們的開發效率。

JSON資料結構

JSON是一個標記符的序列,這些標記符主要有構造字元、字串、數字和字面名。{} 雙括號表示物件、[] 中括號表示陣列、,逗號表示資料分隔符、"" 雙引號內是屬性或值、:冒號表示鍵值對分隔符、false表示假、null表示空值、true表示真,利用這些標記符我們可以方便快捷的生成JSON格式的資料。JSON一般有兩種表示結構的資料分別是物件和陣列,以”{”大括號開始,以”}”大括號結束的為物件結構,以”[”中括號開始,以”]”中括號結束的為陣列結構。

定義JSON結構資料

在python中可以利用字典和列表(相當於陣列)構建JSON結構的資料,Python字典包括在花括號 {} 中,每個值之間用逗號","分割,每個鍵值對( key:value )用冒號 ": "分割。鍵一般是唯一不可變的,而值則可以取任何資料型別。Python 沒有內建對陣列的支援但可以使用列表代替,每個列表可以包含多個值,每個值分配了一個索引,值之間用逗號","分割。

轉換成JSON資料

檔案中只能寫字串,所以如果我們想把JSON結構的資料寫入檔案就需要先將其轉成JSON字串。當然JSON字串不能直接用key、value來取值的,所以使用前我們需要先對JSON字串進行轉換。Python中將字典轉換成JSON格式非常簡單,直接引入內建的json模組來對 JSON資料進行編解碼。json模組提供了四個方法: dumps、dump、loads、load,dump和dumps可以將字典進行序列化編碼JSON格式的字串,load和loads反序列化將json格式字串資料解碼為字典。

dump和dumps的區別

dump和dumps都是用來序列化物件的Python物件的,可以將字典編碼成JSON字串。主要的區別在於dump函式需要傳入檔案描述符將序列化的JSON字串儲存到檔案中,而dumps函式則可以直接生成JSON字串,其他的引數基本一樣使用。dump方便資料儲存,dumps則方便資料傳輸。

load和loads的區別

load和loads都是用來反序列化Python物件的,可以將JSON字串解碼成Python的字典。load主要針對檔案控制代碼可以將檔案中的JSON字串轉換成Python的字典,loads主要針對記憶體中的物件,可以將記憶體中的JSON字串轉換成Python的字典。

總結:

JSON因為其體積小、結構簡潔、層次清晰、快儲存,易解析等特點,被廣泛應用在介面互動中作為資料傳輸媒介。現在大部分語言和框架都支援JSON格式,所以複用率很高!以上內容是小編給大家分享的【Python實戰013:如何將資料以JSON格式輸出】。希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。

為了方便學習,下面附上本文用到的原始碼:

dict = {}list = []dict['name'] = 'zhangsan'dict['age'] = 18dict['addr'] = '衡陽'dict['isSir'] = Truelist.append(dict)[{'name': 'zhangsan', 'age': 18, 'addr': '衡陽', 'isSir': True}]string = json.dumps(list, indent = 2)with open('./a.txt',mode='w+') as wf:    wf.write(string)[  {    "name": "zhangsan",    "age": 18,    "addr": "\u8861\u9633",    "isSir": true  }]with open('a.json', 'w') as f:    json.dump(dict, f, indent = 2)string = json.dumps(list, indent = 2)with open('./a.json',mode='w') as f:    f.write(string)with open("a.json", "r", encoding='utf-8') as f:    load_val = json.load(f)          # 直接讀取檔案控制代碼    print(load_val, type(load_val))    f.seek(0)                        # 將檔案遊標移動到檔案開頭位置    string = f.read()    print(string, type(string))    loads_val = json.loads(string)   # loads的傳入引數為字串型別    print(loads_val, type(loads_val))====================================================================================={'name': 'zhangsan', 'age': 18, 'addr': '衡陽', 'isSir': True} <class 'dict'>{"name": "zhangsan", "age": 18, "addr": "\u8861\u9633", "isSir": true} <class 'str'>{'name': 'zhangsan', 'age': 18, 'addr': '衡陽', 'isSir': True} <class 'dict'>

46
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Mybatis這個問題,很多人都答不上來