1. loads方法與load方法的異同 在Python中json是一個非常常用的模塊,這個主要有4個方法:
json.dumps json.dump json.loads json.load 這里主要分析講解一下json的loads和load方法。 這兩個方法中都是把其他類型的對象轉(zhuǎn)為Python對象,這里先說明一下Python對象, Python對象包括: 所有Python基本數(shù)據(jù)類型,列表,元組,字典,自己定義的類,等等等等,當然不包括Python的字符串類型,把字符串或者文件鎏中的字符串轉(zhuǎn)為字符串會報錯的
1.1不相同點: loads操作的是字符串 load操作的是文件流 1.2 相同點 除了第一個參數(shù)(要轉(zhuǎn)換的對象)類型不同,其他所有的參數(shù)都相同 最終都是轉(zhuǎn)換成Python對象 1.3 例子 先來一個例子,除了要轉(zhuǎn)換的對象,其他什么參數(shù)都不傳:
s = '{"name": "wade", "age": 54, "gender": "man"}' # json.loads讀取字符串并轉(zhuǎn)為Python對象 print("json.loads將字符串轉(zhuǎn)為Python對象: type(json.loads(s)) = {}".format(type(json.loads(s)))) print("json.loads將字符串轉(zhuǎn)為Python對象: json.loads(s) = {}".format(json.loads(s)))
# json.load讀取文件并將文件內(nèi)容轉(zhuǎn)為Python對象 # 數(shù)據(jù)文件要s.json的內(nèi)容 --> {"name": "wade", "age": 54, "gender": "man"} with open('s.json', 'r') as f: s1 = json.load(f) print("json.load將文件內(nèi)容轉(zhuǎn)為Python對象: type(json.load(f)) = {}".format(type(s1))) print("json.load將文件內(nèi)容轉(zhuǎn)為Python對象: json.load(f) = {}".format(s1)) 1 2 3 4 5 6 7 8 9 10 11
2. 轉(zhuǎn)換成Python對象 由于loads和load兩個方法只是處理的數(shù)據(jù)源不同,其他的參數(shù)都是相同的,返回的結(jié)果類型也相同,故這是loads和load方法兩個只說一個,
日常工作中最常見的就是把字符串通過json.loads轉(zhuǎn)為字典,其實json的loads方法不僅可以把字符串轉(zhuǎn)為字典,還可以轉(zhuǎn)為任何Python對象。 比如說,轉(zhuǎn)成python基本數(shù)據(jù)類型:
print('json.loads 將整數(shù)類型的字符串轉(zhuǎn)為int類型: type(json.loads("123456"))) --> {}'.format(type(json.loads("123456")))) print('json.loads 將浮點類型的字符串轉(zhuǎn)為float類型: type(json.loads("123.456")) --> {}'.format(type(json.loads("123.456")))) print('json.loads 將boolean類型的字符串轉(zhuǎn)為bool類型: type(json.loads("true")) --> {}'.format((type(json.loads("true"))))) print('json.loads 將列表類型的字符串轉(zhuǎn)為列表: type(json.loads(\'["a", "b", "c"]\')) --> {}'.format(type(json.loads('["a", "b", "c"]')))) print('json.loads 將字典類型的字符串轉(zhuǎn)為字典: type(json.loads(\'{"a": 1, "b": 1.2, "c": true, "d": "ddd"}\')) --> %s' % str(type(json.loads('{"a": 1, "b": 1.2, "c": true, "d": "ddd"}')))) 1 2 3 4 5 json模塊會根據(jù)你的字符串自動轉(zhuǎn)為最符合的數(shù)據(jù)類型, 但是需要注意的是不能把轉(zhuǎn)為字符串,否則會報json.decoder.JSONDecodeError錯誤:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ———————————————— 版權(quán)聲明:本文為CSDN博主「荒野雄兵」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/daerzei/article/details/100598901
|