我研究了带有自然键和依赖项等的json 序列化,以控制被序列化的字段。我还尝试使用中间件wodofstuff来实现更深层次的外键序列化。但是,我决定使用模板来呈现 JSON 响应。
一些陷阱是
- 我负责格式化 JSON(更容易出错,例如缺少分号)
- 我负责转义字符
- 渲染比内置序列化慢?
一些优点是
- 我可以控制序列化的内容(即使基础模型已更改)
- 我可以格式化 JSON 文件上的多对多或外键关系,但我喜欢
低密度脂蛋白;就我而言,我需要的 JSON 文件的格式是非常自定义的。它在字典列表中有字典。有些字段是迭代的,所以我在模板中有 for 循环来呈现它们。但是,该格式要求将迭代对象中的某些字段封装在列表中,而不是字典。
这是我在考虑simplejson时遇到的障碍。通过使用类似的东西
import simplejson as json
def encode_complex(obj):
if isinstance(obj, complex):
return [obj.real, obj.imag]
raise TypeError(repr(o) + " is not JSON serializable")
json.dumps(2 + 1j, default=encode_complex)
'[2.0, 1.0]'
我可以设法返回迭代数据;但是,我需要迭代中的迭代和自定义对象类型(列表或字典)来封装某些迭代。最后,(可能是缺乏知识或缺乏耐心)我决定只在模板中进行。
我觉得通过模板渲染它不是最可扩展或“最智能”的方式,它可能以更好的方式完成吗?请随时证明我是对还是错。