Python里把list转json的这些方法,你绝对想不到
转换list成为json的法子存在着多种, 极为常用的办法是运用内置的json模块、 第三方库、手动开展序列化。当中, 运用json模块是最常见的情形, 由于它属于标准库的一部分, 并不需要额外去安装。为了能够更优地理解那些方法, 我们会详细介绍其中的一个方法: 运用json模块。在操控json模块之际, 最先得把该模块给导入进来, 接着运用json.dumps()这个方法把list转变为json字符串。json.dumps()方法存在多个能够用于定制化json输出的参数, 举例来讲, 参数能够去设置json字符串的缩进, 以此保证输出格式更为美观。下面是一个简单的示例:import jsonmy_list [1, 2, 3, 4, 5]json_str json.dumps(my_list, indent4)print(json_str)一、使用json模块1、导入json模块在其中, json模块属于标准库的一部分, 所以不需要额外去安装, 能够直接进行导入并用其开展使用。import json2、使用json.dumps()方法json.dumps()这个方法, 是用来把对象转变成json字符串的, 这个方法存在着多个参数, 情况如下:json.dumps(obj, *, skipkeysFalse, ensure_asciiTrue, check_circularTrue, allow_nanTrue, clsNone, indentNone, separatorsNone, defaultNone, sort_keysFalse)示例代码import jsonmy_list [1, 2, 3, 4, 5]json_str json.dumps(my_list, indent4)print(json_str)输出结果[1,2,3,4,5]二、使用库存在着这样一个第三方库, 其具备功能, 此种功能跟内置的json模块相类似 , 该库被得以使用的方法, 跟json模块近乎一样 , 然而在性能方面, 或许会存在一些差异 , 关于该库去进行使用的步骤, 具体如下:1、安装库如果尚未安装库可以使用以下命令安装pip install simplejson2、导入模块与json模块类似导入模块import simplejson as json3、使用.dumps()方法该.dumps()方法的运用形式跟json.dumps()方法是一样的:import simplejson as jsonmy_list [1, 2, 3, 4, 5]json_str json.dumps(my_list, indent4)print(json_str)输出结果与json模块相同[三、手动序列化手动序列化意味着不借助任何一个库, 依靠手动把对象转变成json字符串, 这种方式不被建议应用于实际的开发, 其原因是手动进行序列化这个过程繁杂而且容易出现错误, 下述是一个相对简单的手动序列化的示例:my_list [1, 2, 3, 4, 5]json_str [ , .join(map(str, my_list)) ]print(json_str)输出结果[1, 2, 3, 4, 5]手动进行序列化, 产生的缺点是, 代码的复杂度极高, 具备的可维护性很差, 并且极易忽略掉具有某些特殊情况的情况, 像嵌套结构、非基本类型数据这样的情形便是例子。四、json模块详细使用1、将list转换为json字符串并写入文件于实际开展开发期间, 一般来讲是需要去把json数据写入到文件之中的。能够运用json.dump()这个方法来将对象转变成json字符串, 进而将其写入到文件里面。以下给出的是一个示例:import jsonmy_list [1, 2, 3, 4, 5]with open(output.json, w) as f:json.dump(my_list, f, indent4)这段代码会把list予以转换, 使之变为json字符串, 之后把该json字符串写入.json类型的文件之中。2、从json文件读取并转换为list通过读取json文件, 把它转换为对象, 能够运用json.load()方法, 给你看一个示例。import jsonwith open(output.json, r) as f:my_list json.load(f)print(my_list)这段代码从.json文件读取json数据并转换为list。3、处理复杂数据结构json模块不但能够处理基本数据类型, 而且能够处理复杂的数据结构, 像嵌套list以及字典, 下面是举的一个包含嵌套结构的例子:import jsonnested_list [1, 2, [3, 4], {key: value}]json_str json.dumps(nested_list, indent4)print(json_str)输出结果[1,2,[3,4],{key: value}]4、自定义序列化在某些时候, 存在这样一种可能性, 那就是需要对自定义出来的对象进行序列化操作。而在这种情形之下, 能够借助实现自定的编码器类的方式来达成这一目的。下面所呈现的便是一个具体的示例:import jsonclass CustomObject:def __init__(self, name, value):self.name nameself.value valueclass CustomEncoder(json.JSONEncoder):def default(self, obj):if isinstance(obj, CustomObject):return {name: obj.name, value: obj.value}return super().default(obj)custom_obj CustomObject(example, 42)json_str json.dumps(custom_obj, clsCustomEncoder, indent4)print(json_str)输出结果{name: example,value: 42}五、json模块常见问题及解决方法1、序列化时遇到在进行序列化的这个过程当中, 要是不小心碰见了, 基本上那是由于对象不具备支持默认的序列化方式。能够借由去实现自定义编码器类, 或者是利用参数来将其解决。2、处理非ASCII字符在默认状况下, json.dumps()这个方法会把所有并非ASCII字符转变成\uXXXX序列。要是期望输出原本的非ASCII字符, 能够将参数设定为False。import jsonmy_list [你好, 世界]json_str json.dumps(my_list, ensure_asciiFalse, indent4)print(json_str)输出结果[你好,世界]3、处理特殊浮点数值json模块默认对于NaN、 和 - 等存在一系列特殊情况的浮点数值进行支持。要是期望把这些特殊的值给禁用掉, 那么能够将参数设定为False。import jsonmy_list [float(nan), float(inf), float(-inf)]try:json_str json.dumps(my_list, allow_nanFalse, indent4)except ValueError as e:print(fError: {e})输出结果Error: Out of range float values are not JSON compliant4、排序字典键进行序列化字典这个行为时, 要是期望依照键的字母顺序去排序, 那么能够把参数设定为True。import jsonmy_dict {b: 1, a: 2, c: 3}json_str json.dumps(my_dict, sort_keysTrue, indent4)print(json_str)输出结果{a: 2,b: 1,c: 3}依托上述所呈现的内容, 想必你已然掌握了怎样于其中把list转变成json字符串, 并且知晓了json模块的详尽运用方式以及常见问题解决办法。期望这些内容能对你产生帮助。相关问答FAQs如何在中将列表转换为JSON格式要在其中, 是能够借由json模块的办法, 轻松把列表转化成JSON格式。首先, 得保证将json模块给导入进来。而后, 是能够借助json.dumps()函数, 而把列表转变为JSON字符串的。比如说:import json my_list [1, 2, 3, 四, {五: 5}] json_string json.dumps(my_list) print(json_string)这样将被转换为JSON字符串输出结果将是1, 2, 3, 四, {五: 5}转换后的JSON字符串是否可以保存到文件中没错, 能够把转换过后的JSON字符序列存储至文件里头。于运用json.dump()函数时分, 能够径直把列表写入文件。比如:with open(output.json, w) as json_file: json.dump(my_list, json_file)这段代码, 会于当前目录下, 创建一个带有.json后缀之名的文件, 且会把内容采用JSON格式, 写入到这个文件之中。如何将JSON字符串再转换回列表能够运用json.loads()函数把JSON字符串转变为列表, 举例来说:json_string [1, 2, 3, 四, {五: 5}] converted_list json.loads(json_string) print(converted_list)这样将恢复为原始的列表形式输出结果为其一, 其二, 其三, 名为“四”的那个, 包含着“五”对应数字为五如此这般的集合。