json序列化:
json的dumps方法可以將json格式資料序列為python的相關資料型別,比如str,常用於列印,另外,在序列化時,中文漢字被轉換為unicode編碼,在dumps函式中新增引數ensure_ascii=false可解決;dumps的indent參考可以調整顯示格式,即縮排,一般設定為2。【
字典中鍵值對,不管是單還是雙引號,dumps後,都是雙引號】
json反序列化:
json的loads方法可以把python資料型別轉換為json相應的資料型別格式,反序列化後可以對json資料進行各種操作;反序列化時,鍵值資料不能用雙引號,只能用單引號(如果是雙引號,可以用eval)。
鍵值對如果是單引號,loads報錯:
json.decoder.jsondecodeerror: expecting property name enclosed in double quotes: line 1 column 2 (char 1)
import jsonprint('字典'.center(10,'*'))
s1 = ',"jack":}'
s2 = ",'jack':}" # 字串通過json.loads轉字典的時候,字串裡面不能為單引號,列印s2會報錯
print(json.loads(s1), type(json.loads(s1)))
# 用dumps,字典中鍵值變成雙引號
print(json.dumps(json.loads(s1)), type(json.dumps(json.loads(s1))))
print(json.dumps(json.loads(s1),ensure_ascii=false), type(json.dumps(json.loads(s1),ensure_ascii=false)))
print(json.dumps(json.loads(s1),ensure_ascii=false,indent=2))
# 用str,字典中鍵值依舊是單引號
print(str(json.loads(s1)), type(str(json.loads(s1))))
# print(json.loads(s2)) # 報錯
# 但是,可以通過eval將s2轉換為字典
print(eval(s2), type(eval(s2)))
# dumps會將中文轉換成unicode編碼,加引數ensure_ascii=false解決
print(json.dumps(eval(s2)), type(json.dumps(eval(s2))))
print(json.dumps(eval(s2),ensure_ascii=false), type(json.dumps(eval(s2),ensure_ascii=false)))
print('字串--列表'.center(10,'*'))
la = '[1,2,3,4]'
lb = "[1,2,3,4]"
print(eval(la), type(eval(la)))
print(json.loads(la), type(json.loads(la))) # 字串轉列表[1, 2, 3, 4] print(json.dumps(json.loads(la)),type(json.dumps(json.loads(la)))) # 列表轉字串,[1, 2, 3, 4] print(eval(lb), type(eval(lb)))
print(json.loads(lb), type(json.loads(lb))) # 字串轉列表[1, 2, 3, 4] print(json.dumps(json.loads(lb)),type(json.dumps(json.loads(lb)))) # 列表轉字串,[1, 2, 3, 4] print('列表--字串'.center(10,'*'))
user_list = ['tom', 'jack']
user_list2 = ["tom", "jack"]
print(type(json.dumps(user_list)), json.dumps(user_list)) # 列表轉字串 ["alex", "jason"]
print(type(json.dumps(user_list2)), json.dumps(user_list2))
print(type(json.dumps(user_list2)), str(user_list2)) # 雙引號變單引號
print('匯入、匯出'.center(10,'*'))
dic =
json.dump(dic, open('db', 'w')) # 將字典序列化匯入檔案,寫入字串
r = json.load(open('db', 'r')) # 反序列化從檔案中匯出
Json序列化和反序列化
json測試 public class jsontest irun 實體序列化和反序列化 string json1 jsonhelper.serializeobject sdudent json1 student sdudent1 jsonhelper.deserializejsontoobject...
json序列化與反序列化
1.什麼是序列化與反序列化?序列化就是將記憶體中的資料結構轉換成一種中間格式儲存到硬碟或者基於到網路傳輸。反序列化就是將硬碟中或者網路中傳來的一種資料格式轉換成記憶體中資料格式。2.為什麼要有序列化和反序列化?1.可以儲存程式的執行狀態。比如遊戲中使用者在某個狀態下線,使用者遊戲的資料需要儲存,這時...
序列化反序列化
只要用到網路開發啊,就一定會用到序列化反序列化。1,自定義結構體 struct test int len int type char data 10 test data test buffer.缺點 明文,只支援基本型別,不支援變長結構 2,在1的基礎上,自定義乙個緩衝類,存放乙個訊息。把訊息寫入緩...