Python中的JSON格式化


JSON (JavaScript 物件表示法)是一種輕量級、廣為接受的資料交換格式。使用Python中的JSON格式化技術,我們可以將JSON字串轉換為Python物件,並將Python物件轉換為JSON字串。

要使用這些功能,我們需要使用Python的json模組。json模組包含在Python標準庫中,因此我們首先需要匯入它。

import json

將Python物件轉換為JSON字串

在json模組中,有一些方法,如dump()和dumps(),可以將Python物件轉換為JSON字串。dump()方法接受兩個引數,第一個是物件,第二個是檔案物件。此方法將物件序列化為JSON格式的**流**到檔案物件。類似地,dumps()方法只接受一個引數,即物件。它將物件轉換為JSON**字串**。

示例程式碼

import json
from io import StringIO
str_io_obj = StringIO()
#Use JSON Dump to make StringIO
json.dump(["India", "Australia", "Brazil"], str_io_obj)
print('StringIO Object value: ' + str(str_io_obj.getvalue()))
my_json = {
   "name" : "Kalyan",
   "age" : 25,
   "city" : 'Delhi'
}
print(json.dumps(my_json, indent=4))

輸出

StringIO Object value: ["India", "Australia", "Brazil"] {
   "name": "Kalyan",
   "age": 25,
   "city": "Delhi"
}

將JSON字串轉換為Python物件

在這種情況下,我們正在反序列化JSON字串。有兩種不同的方法:load()和loads()。這兩種方法都將JSON檔案作為引數。load()方法從檔案物件資料轉換為Python物件,loads()方法從字串型別資料轉換。

示例程式碼

import json
from io import StringIO
str_io_obj = StringIO('["xyz", "abc", "xyz", "pqr"]')
#load from StringIO
print('Load: ' + str(json.load(str_io_obj)))
print('String to Json: ' + str(json.loads('{"xyz" : 1, "abc" : 2, "xyz" : 3, "pqr" : 4}')))

輸出

Load: ['xyz', 'abc', 'xyz', 'pqr']
String to Json: {'xyz': 3, 'abc': 2, 'pqr': 4}

Python中的JSON編碼器和解碼器類

JSONEncoder類用於將Python物件轉換為JSON格式。在這個例子中,我們將看到如何使用JSONEncoder將複數物件轉換為JSON型別物件。

示例程式碼

import json
class Comp_Encoder(json.JSONEncoder):
   def default(self, comp_obj):
      if isinstance(comp_obj, complex):
      return [comp_obj.real, comp_obj.imag]
      return json.JSONEncoder.default(self, comp_obj)
      print(json.dumps(5+8j, cls=Comp_Encoder))

輸出

[5.0, 8.0]

JSONDecoder類執行相反的操作。

示例程式碼

import json
my_str = '{"Asim" : 25, "Priyesh" : 23, "Asim" : "28"}'
#Decode JSON using the JSONDecoder
print(json.JSONDecoder().decode(my_str))
print(json.JSONDecoder().raw_decode(my_str))

輸出

{'Asim': '28', 'Priyesh': 23}
({'Asim': '28', 'Priyesh': 23}, 44)

更新於:2020年6月26日

9K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告