Python 語言來編碼和解碼 JSON 物件

2022-08-05 12:12:16 字數 2908 閱讀 3622

json函式:

json.dumps: python標準庫中的json模組,整合了將資料序列化處理的功能. 將 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)

常用引數演示:

1

#!/usr/bin/python

2import

json

34 jsondata = '';

56 text =json.loads(jsondata)

7print text

執行結果:

這樣的格式一般都不優美,當資料很多的時候,看得就不是很直觀方便,現在用一個引數來對json進行資料格式化輸出

>>> import

json

>>> print json.dumps(, sort_keys=true, indent=4, separators=('

,', ': '

))

python 預設支援的資料型別向 json 型別的轉化對照表:

python

json

dict

object

list, tuple

array

str, unicode

string

int, long, float

number

true

true

false

false

none

null

如果序列化的目標資料中存在序列化不支援的資料型別,如decimal.decimal或者datetime資料型別時,會拋異常typeerror: *** is not json serializable,可以通過自定義處理來擴充套件

1

import json 2

from

decimal

import decimal 3

4 chart_list =}} 5

6class

decimalencoder(json.jsonencoder): 7

8 def default

(self, n): 9

ifisinstance(n, decimal):

10return

int(n)

11 #super(decimalencoder, self).default

(n)12

13 str = json.dumps(chart_list, cls=decimalencoder)

14print(str)

>>>}}

1

import json 2

from

datetime import date 3

from

datetime import datetime 4

56class

jsoncustomencoder(json.jsonencoder): 7

8 def default

(self, obj): 9

ifisinstance(obj, datetime):

10return obj.strftime('

%y-%m-%d %h:%m:%s')

11elif isinstance(obj, date):

12return obj.strftime('

%y-%m-%d')

13else:14

return json.jsonencoder.default

(self, obj)

1516 # ds = json.dumps(d, cls=jsoncustomencoder)

json.loads:將已編碼的 json 字串解碼為 python 物件

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

**演示:

1

#!/usr/bin/python

2import

json

34 jsondata = '';

56 text =json.loads(jsondata)

7print text

執行結果:

json 型別轉換到 python 的型別對照表:

json

python

object

dict

array

list

string

unicode

number (int)

int, long

number (real)

float

true

true

false

false

null

none