Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者:王巍(onevcat),江湖人称 "喵神",他是 ObjC 中国组织的发起人和领导者,也是著名开源框架 Kingfisher 的作者。 起源 前几天看到同事的一个 P-R,里面有将一个类型转换为字典的方法。在我们所使用的 API 中,某些方法需要接受 JSON 兼容的字典 (也就是说,字典中键值对的 value 只能是数字,字符串,布尔值,以及包含它们的嵌套字典或者数组等),因为项目开始是在好几年前了,所以一直都是在需要的时候使用下面这样手写生成字典的方法: struct Cat { let name: String let age: Int func toDictionary() -> [String: Any] { return ["name": name, "age": age] } } let kitten = Cat(name: "kitten", age: 2) kitten.toDictionary() // ["name": "kitten", "age": 2] 显然这是很蠢的做法: 对于每一个需要处理的类型,我们都需要 toDictionary() 这样的模板代码; 每次进行属性的更改或增删