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)
广告