首页 > 为什么目前都倾向于使用runtime将json转换成model,而不直接使用工具生成代码的方式?

为什么目前都倾向于使用runtime将json转换成model,而不直接使用工具生成代码的方式?

看了Mantle这个库,依然需要在-JSONKeyPathsByPropertyKey方法中写对应的Keys。使用runtime在性能上也会有影响。直接生成代码不是来的更加方便吗?


首先,用JSONModel就可以不用写上对应的 keys 了~ 我没用过你说的这个库,如果每个 key 都需要写的话,我觉得体现不出什么优势~

其次,用工具生成代码,我觉得就可能出现潜在的不一致。model 一旦改变,比如添加了哪个字段/字段改了,忘了改生成的代码或者忘了重新跑一遍工具,就会取不到值,属性一直是 nil 还不知道怎么回事。用上 runtime 的转换,至少可以避免人为的疏忽~


大部分情况下,解析的数据都不会很大,手机的性能完全可以满足这点开销。基于这点,会有以下好处:

最大好处

其他好处

更多的好处,还需要使用者再去体会,不同的方式,都去试试,说不定还可以总结出新的方式


还不如用MJExtension来得简单。不过感觉用常量作key,字典取。比较灵活。(你不觉得有很多用不到的属性也转model很浪费吗?)


本人目前还是用手动写的比较多,不过观察,jsonmodel确实是好东西


1.费事
2.不好理解维护
3.性能不差啥
4.runtime赋值的库很多有统一容错,安全性更高


直接生成代码会有大量的无用代码,如果 JSON 有1000个 key ,你需要至少有 1000 个属性,还要有 1000 行 xxx.xxx = json["xxx"]; 的代码。


Mantle就是你说的用于自动生成Model代码的工具,只是这个库的灵活性很大,对于不同的key怎么transform你可以完全自己定制。
Mantle在你自己定制方式的基础上自己序列化或者反序列化。
我目前代码正在用这个库,感觉非常不错。

推荐这两篇帖子给你

Mantle使用
Mantle是什么

【热门文章】
【热门文章】