MST

星途 面试题库

面试题:Python中json.dumps序列化数据中等难度题

假设你有一个Python字典,其中包含嵌套的列表和字典结构,例如{'key1': [1, {'sub_key':'sub_value'}, 3], 'key2': {'nested_key': 'nested_value'}},请编写代码使用json.dumps将其序列化为JSON字符串,并确保中文字符正常显示,同时说明json.dumps函数的默认参数及其作用。
19.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import json

data = {'key1': [1, {'sub_key':'sub_value'}, 3], 'key2': {'nested_key': 'nested_value'}}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

json.dumps函数默认参数及其作用:

  • skipkeys:默认值为False。如果设置为True,当字典的键不是基本类型(字符串、数字、元组、列表、字典、布尔值或None)时,跳过这些键而不引发TypeError
  • ensure_ascii:默认值为True。如果设置为False,非ASCII字符会按原字符输出,能正常显示中文字符等非ASCII字符;如果为True,非ASCII字符会被转义成\uXXXX的形式。
  • check_circular:默认值为True。如果设置为False,将不检查对象中是否存在循环引用,可能导致无限循环。
  • allow_nan:默认值为True。如果设置为False,在序列化float类型的NaNInfinity-Infinity时会引发ValueError,默认情况下会将它们序列化为nullInfinity-Infinity
  • cls:默认值为None。可以传入一个自定义的JSON编码器类,用于处理默认编码器无法处理的对象类型。
  • indent:默认值为None。如果设置为一个整数或字符串,JSON字符串会进行缩进格式化,便于阅读,整数表示缩进的空格数,字符串表示缩进的字符。
  • separators:默认值为(', ', ': '), 即项之间用逗号加空格分隔,键值对之间用冒号加空格分隔。可以自定义分隔符,例如(',', ':')可以减少生成的JSON字符串中的空格。
  • default:默认值为None。可以传入一个函数,当遇到无法序列化的对象时,会调用该函数来获取可序列化的值。