Python3之json模塊


概念:

啊序列化(Serialization):將對象的狀態信息轉換為可以存儲或可以通過網絡傳輸的過程,傳輸的格式可以是JSON,XML等。反序列化就是從存儲區域(JSON,XML)讀取反序列化對象的狀態,重新創建該對象。

JSON(Java Script Object Notation):一種輕量級數據交互格式,相對於XML而言更簡單,也易於閱讀和編寫,機器也方便解析和生成,Json是JavaScript中的一個子集。

 

json提供四個功能:dumps, dump, loads, load

dumps 功能:將數據通過特殊的形式轉換為所有程序語言都認識的字符串

實例

import json
data = {'startTime':'2018-03-13','phone':'1','endTime':'2018-03-14','pageIndex':1,'pageSize':50,'integralType':2}   #一個數組
json_str13 = (json.dumps(data, indent=20,ensure_ascii=True,sort_keys=False,separators=(',',';')))  #轉換為json
print(json_str13)
{
                    "startTime";"2018-03-13",
                    "phone";"1",
                    "endTime";"2018-03-14",
                    "pageIndex";1,
                    "pageSize";50,
                    "integralType";2
}

注釋:dumps里面的參數indent,ensure_asciisort_keys,separators

  indent 的作用相當於對json的格式進行了排序 ,並給他間隔,如indent=4

 

json.dumps(data)
{"startTime";"2018-03-13","phone";"1","endTime";"2018-03-14","pageIndex";1,"pageSize";50,"integralType";2}

json.dumps(data, indent=4)
{ "startTime";"2018-03-13", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
ensure_ascii的作用相當於是否直接顯示中文 ,如ensure_ascii=True
json.dumps(data, indent=4,ensure_ascii=True)
{ "startTime";"\u6d4b\u8bd5", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
json.dumps(data, indent=4,ensure_ascii=False)

{ "startTime";"測試", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }

 sort_keys的作用相當於先把字母的排序在返回json ,如sort_keys=False

 
        
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=False)
{
    "startTime";"測試",
    "phone";"1",
    "endTime";"2018-03-14",
    "pageIndex";1,
    "pageSize";50,
    "integralType";2
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True)
{
    "endTime";"2018-03-14",
    "integralType";2,
    "pageIndex";1,
    "pageSize";50,
    "phone";"1",
    "startTime";"測試"
}

 separators的作用相當json的格式是怎么樣的 ,如separators=(',',';')

json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=(',',';'))
{
    "endTime";"2018-03-14",
    "integralType";2,
    "pageIndex";1,
    "pageSize";50,
    "phone";"1",
    "startTime";"測試"
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=('¥','%'))
{
    "endTime"%"2018-03-14"¥
    "integralType"%2¥
    "pageIndex"%1¥
    "pageSize"%50¥
    "phone"%"1"¥
    "startTime"%"測試"
}

 loads 功能:json編碼的字符串再轉換為python的數據結構

 

json_str={"startTime": "測試", "phone": "1", "endTime": "2018-03-14", "pageIndex": 1, "pageSize": 50, "integralType": 2}
json.loads(json_str) {'startTime': '測試', 'phone': '1', 'endTime': '2018-03-14', 'pageIndex': 1, 'pageSize': 50, 'integralType': 2}

 dump 功能 將數據通過特殊的形式轉換為所有程序語言都認識的字符串,並寫入文件

url=‘測試測試測試’
file = open('D:/tmp.json','w') #打開一個文件,給他一個寫的權限
json.dump(url,file) #把他寫到文件里面去
file.close() #關閉文件

load 功能從數據文件中讀取數據,並將json編碼的字符串轉換為python的數據結構

with open('D:/tmp.json','r') as f: #打開這個文件,給他一個讀的權限
print(json.load(f))
#讀這個文件
測試測試

說明

json編碼支持的基本類型有:None, bool, int, float, string, list, tuple, dict.

對於字典,json會假設key是字符串(字典中的任何非字符串key都會在編碼時轉換為字符串),要符合JSON規范,應該只對python列表和字典進行編碼。此外,在WEB應用中,把最頂層對象定義為字典是一種標准做法。

json編碼的格式幾乎和python語法一致,略有不同的是:True會被映射為true,False會被映射為false,None會被映射為null,元組()會被映射為列表[],因為其他語言沒有元組的概念,只有數組,也就是列表。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM