1. 程式人生 > >python編程 之 json包

python編程 之 json包

key lib 就會 .org 字符 clas bool 一個 html

1,json是什麽?

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,易於人閱讀和編寫。

我的理解就是:json是一種統一的格式化的文件,比如,一個json裏放著n行,每行是一個字典,字典裏存放著字段。

2,json.dumps

作用:用於將 Python 對象編碼成 JSON 字符串。

語法:json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None,

encoding="utf-8", default=None, sort_keys=False, **kw) #括號中是其內部自定義的參數和參數的默認值

基本用法:

import json

data=[{a:1,b:2,c:3}]
json=json.dumps(data)    #encode the data
print json,type(json)

#結果是[{"a": 1, "c": 3, "b": 2}]  <type ‘str‘>    #很神奇,結果是字符串格式的

帶參數用法:

import json

data=[{a:1,b:2,c:3,d:4}]
jsondata=json.dumps(data,sort_keys=True,indent=5,separators=(,
,:)) print jsondata,type(jsondata)

sort_keys:編碼成json的時候,是否按照鍵來排序。

indent:輸出的時候每行數據縮進5個空格

separators:指定鍵值對的分隔符是逗號,鍵和值的分隔符是冒號

Skipkeys:默認值是False,如果dict的keys內的數據不是python的基本類型(str,unicode,int,long,float,bool,None),設置為False時,就會報TypeError的錯誤。此時設置成True,則會跳過這類key

ensure_ascii:默認值True,如果dict內含有non-ASCII的字符,則會類似\uXXXX的顯示數據,設置成False後,就能正常顯示

encoding:默認是UTF-8,設置json數據的編碼方式。

sort_keys:將數據根據keys的值進行排序。

python轉json數據類型:

技術分享圖片

3 json.loads

作用:json.loads 用於解碼 JSON 數據。該函數返回 Python 字段的數據類型。

語法:json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

簡單實例:(接上文實驗)

#jsondata等於[{"a":1,"b":2,"c":3,"d":4,"e":"5"}],是用dumps轉化而來

pythondata=json.loads(jsondata)
print pythondata,type(pythondata)

#結果是:[{u‘a‘: 1, u‘c‘: 3, u‘b‘: 2, u‘e‘: u‘5‘, u‘d‘: 4}] <type ‘list‘>

json轉python數據類型:

技術分享圖片

4,實例

  1. json.dumps()函數是將一個Python數據類變成json格式的編碼
  2. json.loads()函數是將json格式數據轉換為想要的python格式
import json
def store(data):
    with open(data.json, w) as fw:
        #將字典轉化為字符串
        json_str = json.dumps(data)    #python變成json
        fw.write(json_str)    #寫到文件中
        #上面兩句等同於下面這句
        # json.dump(data,fw)     #區分dump和dumps

def load():
    with open(data.json,r) as f:    #文件源
        data = json.load(f)    #json變成python
        return data


if __name__ == "__main__":
    json_data = {"login":[{"username":"aa","password":"001"},{"username":"bb","password":"002"}],"register":[{"username":"cc","password":"003"},{"username":"dd","password":"004"}]}
    # 函數是將json格式數據轉換為字典
    data = json.loads(json_data)
    store(data)    #調用第一個函數,把python編程變成json

    data = load()    #調用第二函數:把剛剛成了的json的再變回python
    print(data)

python編程 之 json包