面试题答案
一键面试import json
def dict_to_json(dictionary):
def escape_special_chars(value):
if isinstance(value, str):
return value.replace('\n', '\\n').replace('\t', '\\t')
return value
def process_nested(data):
if isinstance(data, dict):
return {key: process_nested(value) for key, value in data.items()}
elif isinstance(data, list):
return [process_nested(item) for item in data]
else:
return escape_special_chars(data)
processed_dict = process_nested(dictionary)
return json.dumps(processed_dict)
def json_to_dict(json_str):
def unescape_special_chars(value):
if isinstance(value, str):
return value.replace('\\n', '\n').replace('\\t', '\t')
return value
def process_nested(data):
if isinstance(data, dict):
return {key: process_nested(value) for key, value in data.items()}
elif isinstance(data, list):
return [process_nested(item) for item in data]
else:
return unescape_special_chars(data)
loaded_dict = json.loads(json_str)
return process_nested(loaded_dict)
你可以使用以下方式调用:
# 示例复杂嵌套字典
complex_dict = {
"key1": "value1\nwith newline",
"key2": [1, 2, "value3\twith tab"],
"key3": {
"sub_key1": "sub_value1"
}
}
json_str = dict_to_json(complex_dict)
recovered_dict = json_to_dict(json_str)
print(f"原始字典: {complex_dict}")
print(f"JSON字符串: {json_str}")
print(f"恢复后的字典: {recovered_dict}")