日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python json库函数_python基础之JSON标准库

發布時間:2025/3/20 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python json库函数_python基础之JSON标准库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、序列化的一些簡單概念 我們平常使用的python對象所進行的操作是在內存中,當程序關閉就會被清空,所以我們需要用一種合適的方法將這些數據保存下來。

為了將我們的數據進行永久存儲,需要引入序列化(pickling/serialization)的概念。

序列化的定義:將復雜的python數據結果轉換成一個二進制數據集合(數據流)。反序列化:從數據流(字符串形式)重新構造復雜的python數據結構。

序列化的好處:我們可以通過網絡或本地存儲介質講這些數據流保存或傳輸。

序列化的方法:引入json、pickling、marshal、shelve,其中最常用的是json。

二、JSON標準庫

2.1 基本用法 json模塊的序列化和反序列化方法分別是dumps和loads,json.dumps()和json.dump()將一個python對象轉換成json串,json.loads()和json.load()將一個json串還原成python對象。

json.dump()和json.dumps()的區別

json.dump()處理的是文件對象,而json.dumps()處理的是字符串對象。

json.load()和json.loads()的區別

json.load()處理的是文件對象,而json.loads()處理的是字符串對象。

2.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>>> json.dumps([])'[]'>>> json.dumps('string')''string''>>> json.dumps(1) '1'>>> json.dumps({'name':'tyson','age':23})'{'age': 23, 'name': 'tyson'}'1

2

3

4

5

6

7

8

91

2

3

4

5

6

7

8

9

使用參數能讓JSON字串格式化輸出: >>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')){ 'a': 'Runoob', 'b': 7}1

2

3

4

51

2

3

4

5

較重要的參數:

sort_keys:是否排序

indent:定義縮進大小

separators:是一個元組,定義分隔符的類型

skipkeys:是否允許JSON字串編碼字典對象時,字典的key不是字符串類型(默認是不允許)

a = ['foo', {'bar': ('baz', None, 1.0, 2)}]s = json.dumps(a, sort_keys=True, indent=4, separators=('!', '?')) #分隔符這里只是測試,一般保持默認逗號和分號即可print sresult:[ 'foo'! { 'bar'?[ 'baz'! null! 1.0! 2 ] }]1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

161

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16 try: data = {'a':1, 'b':2, (1,):3} json.dumps(data) except TypeError,e: print e #keys must be a stringprint json.dumps(data,skipkeys=True) #{'a': 1, 'b': 2}data = {'a':1, 'b':2, 1:3}print json.dumps(data) result:keys must be a string{'a': 1, 'b': 2}{'a': 1, '1': 3, 'b': 2}1

2

3

4

5

6

7

8

9

10

11

12

131

2

3

4

5

6

7

8

9

10

11

12

13

python原始類型向json類型的轉化對照表

pythonjsondictobject

list,tuplearray

str,unicodestring

int,long,floatnumber

Truetrue

Falsefalse

Nonenull

2.3 json.loads()

將json字串轉換成python的數據類型。也就是反序列化。

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

json.loads('{'a':'Runoob','b':7}') {u'a': u'Runoob', u'b': 7}1

21

2

json字串轉換成python對象類型對照表

JSONPythonobjectdict

arraylist

stringunicode

number(int)int

number(real)float

trueTrue

falseFalse

null

2.4 json.dump()

將序列化之后形成的JSON字串保存到文件。

語法格式:dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw): #encoding:UTF-8import jsona={'name':'tyson','age':21,'sex':'boy'}#第一種方法將JSON字串寫入文件中#該方法不需要closewith open('json.txt','a') as f: f.write(json.dumps(a,indent=4))#第二種方法將JSON字串寫入文件中f=open('json.txt','a')json.dump(a,f,indent=4)f.close()#json.txt{ 'age': 21, 'name': 'tyson', 'sex': 'boy'}{ 'age': 21, 'name': 'tyson', 'sex': 'boy'}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

241

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

2.5 json.load()

從文件接受JSON字串,并反序列化成為Python的數據類型。

語法格式:load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

#encoding:UTF-8import jsona={'name':'tyson','age':21,'sex':'boy'}#第一種方法將JSON字串寫入文件中#該方法不需要closewith open('json','a') as f: f.write(json.dumps(a))#第一種方法將文件中的JSON字串轉反序列化成Python的數據類型with open('json','r') as f: print json.loads(f.read())#json{'age': 21, 'name': 'tyson', 'sex': 'boy'}1

2

3

4

5

6

7

8

9

10

11

12

13

14

151

2

3

4

5

6

7

8

9

10

11

12

13

14

15

三、類的序列化

python的JSON想辦法能將各種數據對象都轉換為JSON,其中可選參數default就是用來提供給用戶自行定義轉換函數的 class student(object): def __init__(self,name,sex,age): self.name=name self.sex=sex self.age=agetyson=student('tyson','boy',21)print json.dumps(tyson,default=lambda obj:obj.__dict__)#python的JSON想辦法能將各種數據對象都轉換為JSON,其中可選參數default就是用來提供給用戶自行定義轉換函數的#所以上面的方法與下面這個是等同的def stuclass2json(classObject): return{ 'name':classObject.name, 'sex': classObject.sex, 'age':classObject.age }print json.dumps(tyson,default=stuclass2json)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

181

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

四、多個JSON字串同時解析

一般不會遇到這種情況,待添加

總結

以上是生活随笔為你收集整理的python json库函数_python基础之JSON标准库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。