在KakaJSON手册的第2篇文章中提过:由于JSON格式能表达的数据类型是比较有限的,所以服务器返回的JSON数据有时无法自动转换成客户端想要的数据类型 比如客户端想要的是Date类型,服务器返回的可能是字符串"2018-08-08 08:08:08.888"或者"2018/08/08 08:08:08.888" 像上述情况,KakaJSON内部是无法自动转换的,但提供了值过滤机制,允许开发者对JSON值进行自定义处理 日期处理 // 这2个DateFormatt…
在iOS开发中,后台返回的数据大多是JSON格式,对应地会被网络框架层解析成Swift中的Dictionary.Array.由于数据类型的复杂.字段的繁多,直接使用Dictionary.Array会比较麻烦,比如items[0]["user"]["name"]这样的使用方式,非常不友善,而且没有智能语法提示.所以很多时候会考虑将JSON转换成Model之后再进行操作,会友善很多,比如items[0].user.name. Swift内置了一套Codable机制,可以…
前面的文章介绍了如何利用KakaJSON进行JSON转Model,从这篇文章开始介绍如何将Model转成JSON 生成JSON和JSONString struct Car: Convertible { var name: String = "Bently" var new: Bool = true var age: Int = 10 var area: Float = 0.12345678 var weight: Double = 0.1234567890123456 var heig…
由于JSON格式的能表达的数据类型是比较有限的,所以服务器返回的JSON数据有时无法自动转换成客户端想要的数据类型. 比如服务器返回的时间可能是个毫秒数1565480696,但客户端想要的是Date类型 再比如客户端想要的是浮点数Double类型,但服务器返回的可能是字符串类型"6.45" 再比如客户端想要的是Bool类型,但服务器返回的可能是"true"."1".0 再比如客户端想要的是高精度浮点数NSDecimalNumber类型,服务器为了…
有时候,服务器返回的JSON数据的key跟客户端模型的属性名可能不一致,比如客户端遵守驼峰规范叫做nickName,而服务器端返回的JSON可能叫做nick_name.这时候为了保证数据转换成功,就需要对模型属性名和JSON的key进行相应的映射.KakaJSON提供了简单易用的映射方式. 最基本的用法 struct Person: Convertible { var nickName: String = "" var mostFavoriteNumber: Int = 0 var b…
如果我们有这样一个model: class IPInfoModel(models.Model): TYPE_INTRANET = 1 TYPE_INTERNET = 2 IP_TYPES = ( (TYPE_INTRANET, u'内网'), (TYPE_INTERNET, u'外网'), ) ip = models.GenericIPAddressField("IP", unique=True) ip_type = models.SmallIntegerField(choices=I…
在上一篇文章中提到:有时候服务器返回的某个字段的内容类型可能是不确定的 当时给出的解决方案是实现kk_modelValue或者kk_didConvertToModel方法,根据实际需求自定义JSON的解析逻辑 如果不确定的内容是要转成模型,KakaJSON有更简单的实现方案 举例 struct Book: Convertible { var name: String = "" var price: Double = 0.0 } struct Car: Convertible { var…
除了完成JSON和Model的转换之外,KakaJSON内部还有很多实用的功能,有些也开放为public接口了 遍历属性 struct Cat { var age: Int = 0 let name: String = "" } guard let type = Metadata.type(Cat.self) as? ModelType, let properties = type.properties else { return } for property in propertie…
KakaJSON可以只用一行代码将常用数据进行归档\解档 后面代码中会用到 file 文件路径 // 文件路径(String或者URL都可以) let file = "/Users/mj/Desktop/test.data" String let string1 = "123" // 将字符串写入文件 write(string1, to: file) // 从文件中读取字符串 let string2 = read(String.self, from: file) X…
Numpy数组取值 切片[:,1:5], 掩码操作arr[arr>0], 花哨的索引 arr[0, [1,5]],Pandas的操作类似 Series数据选择方法 Series对象与一维Numpy数组 和标准的Python字典 在许多方面 都一样. 1)将Series看作字典 可以使用Python字典的表达式和方法来检查 键 和索引 值 Series 可以新增,可以扩展. 2)将Series看作一维数组 Series不仅有着和字典一样的接口,而且还具备和Numpy数组一样的数组 数据选择 包括…