「python」Json

王__12發表於2018-08-20

Json

序列化(Serialization):將物件的狀態資訊轉換為可以儲存或可以通過網路傳輸的過程,傳輸的格式可以是JSON、XML等。我們把變數從記憶體中變成可儲存或傳輸的過程稱之為序列化

反序列化:從儲存區域(JSON,XML)讀取反序列化物件的狀態,重新建立該物件。變數內容從序列化的物件重新讀到記憶體裡稱之為反序列化

Json

json是什麼呢?

是一種輕量級的資料交換格式。
完全獨立於程式語言的文字格式來儲存和表示資料。
簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易於人閱讀和編寫,易於機器解析和生成,並有效地提升網路傳輸效率。

常用有2個方法,也是最基本的使用方法:

1、dumps:把字典轉成json字串

2、loads:把json字串轉成字典

import json 
test_dict = {`a`:1, `b`:2}
print(type(test_dict))
 
#把字典轉成json字串
json_text = json.dumps(test_dict)
print(json_text)
print(type(json_text))
 
#把json字串轉成字典
json_dict = json.loads(json_text)
print(json_dict)
print(type(json_dict))

輸出結果為:

<class `dict`>
{"a": 1, "b": 2}
<class `str`>
{`a`: 1, `b`: 2}
<class `dict`>

還有有2個方法讀寫json檔案的方法,與上述方法相比都少了s

1、dump:

2、load:

  • 把字典轉成json字串,並儲存到檔案中
import json
import codecs
test_dict = {`a`:1, `b`:2}
#把字典轉成json字串
json_text = json.dumps(test_dict) 
#把json字串儲存到檔案
#因為可能json有unicode編碼,最好用codecs儲存utf-8檔案
with codecs.open(`1.json`, `w`, `utf-8`) as f:
    f.write(json_text)
  • 從json檔案中讀取到字典中
import json
import codecs 
#從檔案中讀取內容
with codecs.open(`1.json`, `r`, `utf-8`) as f:
    json_text = f.read()
#把字串轉成字典
json_dict = json.loads(json_text)

上面程式碼,我們也可以用load和dump修改。

  • dump把字典轉成json字串並寫入到檔案
import json
import codec 
test_dict = {`a`:1, `b`:2} #把字典轉成json字串並寫入到檔案
with codecs.open(`1.json`, `w`, `utf-8`) as f:
    json.dump(test_dict, f)
  • load從json檔案讀取json字串到字典
#coding:utf-8
import json
import codecs
#從json檔案讀取json字串到字典
with codecs.open(`1.json`, `r`, `utf-8`) as f:
    json_dict = json.load(f)

相關引數

  • json.dumps 相關引數:

(1)sort_keys是告訴編碼器按照字典排序(a到z)輸出。

(2)indent引數根據資料格式縮排顯示,讀起來更加清晰
(3)separators引數的作用是去掉,,:後面的空格,從上面的輸出結果都能看到”, :”後面都有個空格,這都是為了美化輸出結果的作用,但是在我們傳輸資料的過程中,越精簡越好,冗餘的東西全部去掉,因
此就可以加上.

(4)skipkeys引數,在encoding過程中,dict物件的key只可以是string物件,如果是其他型別,那麼在編碼過程中就會丟擲ValueError的異常。skipkeys可以跳過那些非string物件當作key的處理.

(5)輸出真正的中文需要指定ensure_ascii=False

參考:廖雪峰python

http://yshblog.com/blog/104


相關文章