天天看點

Python如何操作json,simplejson類庫如何使用

作者:測開人小江

simplejson是一個Python中的JSON解析器和編碼器,與Python标準庫中的json庫功能相似,但在性能和特性方面更優秀。simplejson支援多種Python資料類型的序列化和反序列化,包括基本資料類型、清單、元組、字典、集合、浮點數、NaN、Infinity等。此外,simplejson還支援擴充的JSON格式,例如支援C注釋、多行字元串等。

在本教程中,我們将介紹simplejson類庫的基本用法,包括JSON編碼、JSON解碼、擴充的JSON格式等。

安裝

使用simplejson類庫需要先安裝simplejson子產品,可以使用pip指令進行安裝:

pip install simplejson
           

JSON編碼

JSON編碼是将Python資料類型轉換為JSON格式的字元串,可以使用simplejson中的dumps方法實作。

import simplejson as json

data = {'name': 'Tom', 'age': 20}
json_str = json.dumps(data)
print(json_str)
           

在這個例子中,我們使用dumps方法将Python字典類型的data變量編碼為JSON格式的字元串,并使用print語句輸出JSON字元串。輸出結果為:

{"name": "Tom", "age": 20}
           

可以看到,JSON格式的字元串中,Python字典的鍵名被轉換為字元串,并用雙引号括起來,Python字典的值則被轉換為對應的JSON資料類型。

除了Python字典類型,simplejson還支援多種Python資料類型的JSON編碼,例如:

import simplejson as json

# 清單
data = ['Tom', 20, True, None, {'name': 'Tom', 'age': 20}]
json_str = json.dumps(data)
print(json_str)

# 元組
data = ('Tom', 20, True, None, {'name': 'Tom', 'age': 20})
json_str = json.dumps(data)
print(json_str)

# 集合
data = set(['Tom', 20, True, None])
json_str = json.dumps(data)
print(json_str)

# 浮點數
data = 3.14
json_str = json.dumps(data)
print(json_str)

# NaN和Infinity
data = float('nan')
json_str = json.dumps(data)
print(json_str)

data = float('inf')
json_str = json.dumps(data)
print(json_str)
           

JSON解碼

JSON解碼是将JSON格式的字元串轉換為Python資料類型的過程,可以使用simplejson中的loads方法實作。

import simplejson as json

json_str = '{"name": "Tom", "age": 20}'
data = json.loads(json_str)
print(data)
           

在這個例子中,我們使用loads方法将JSON格式的字元串解碼為Python字典類型的data變量,并使用print語句輸出Python字典。輸出結果為:

{'name': 'Tom', 'age': 20}
           

除了Python字典類型,simplejson還支援多種JSON資料類型的Python解碼,例如:

import simplejson as json

# 清單
json_str = '["Tom", 20, true, null, {"name": "Tom", "age": 20}]'
data = json.loads(json_str)
print(data)

# 元組
json_str = '["Tom", 20, true, null, {"name": "Tom", "age": 20}]'
data = tuple(json.loads(json_str))
print(data)

# 集合
json_str = '["Tom", 20, true, null]'
data = set(json.loads(json_str))
print(data)

# 浮點數
json_str = '3.14'
data = json.loads(json_str)
print(data)

# NaN和Infinity
json_str = 'NaN'
data = json.loads(json_str)
print(data)

json_str = 'Infinity'
data = json.loads(json_str)
print(data)
           

擴充的JSON格式

除了标準的JSON格式外,simplejson還支援擴充的JSON格式,例如支援C注釋、多行字元串等。

C注釋

C注釋是一種在C語言中常見的注釋形式,以/*開始,以*/結束。在擴充的JSON格式中,可以使用C注釋作為JSON字元串中的注釋内容,例如:

import simplejson as json

json_str = '{"name": "Tom", /* This is a comment */ "age": 20}'
data = json.loads(json_str)
print(data)
           

在這個例子中,我們在JSON字元串中使用了C注釋作為注釋内容,使用loads方法将其解碼為Python字典類型的data變量,并使用print語句輸出Python字典。輸出結果為:

{'name': 'Tom', 'age': 20}
           

多行字元串

在标準的JSON格式中,字元串必須在一行内,不能換行。在擴充的JSON格式中,可以使用反斜杠\将字元串拆成多行,并在行末添加反斜杠\,表示該字元串未結束,例如:

import simplejson as json

json_str = '{"name": "Tom",\n "age": 20,\n "address": "No.1 Street, Beijing"\n}'
data = json.loads(json_str)
print(data)
           

在這個例子中,我們使用反斜杠\将JSON字元串拆成多行,并使用loads方法将其解碼為Python字典類型的data變量,并使用print語句輸出Python字典。輸出結果為:

{'name': 'Tom', 'age': 20, 'address': 'No.1 Street, Beijing'}
           

總結

本教程介紹了simplejson類庫的基本用法,包括JSON編碼、JSON解碼、擴充的JSON格式等。使用simplejson類庫可以友善地将Python資料類型轉換為JSON格式的字元串,也可以将JSON格式的字元串轉換為Python資料類型,使得Python與其他語言之間的資料互動變得更加友善快捷。