Mantle 是一个构建 model 层的库。然而通过 Mantle 偷懒的同时,还是得自己把 JSON 里的字段写成 Objective-C 文件。为了进一步偷懒,我写了一个 Python 小工具:输入 xxx.json
自动生成相应的 Mantle model 文件。
先放地址:https://github.com/sutar/JSON2Mantle
安装:
$ sudo pip install JSON2Mantle
var_name
自动转换成 varName
。id
会转换成 modelId
。目前能处理 NSInteger
, NSString
, BOOL
等基本类型。下一步可能会对 NSURL
等类型进行检测。
例如如下的user
数据:
{
"id": 10,
"name": "Clementina DuBuque",
"username": "Moriah.Stanton",
"email": "Rey.Padberg@karina.biz",
"address": {
"street": "Kattie Turnpike",
"suite_number": "Suite 198",
"city": "Lebsackbury",
"zipcode": "31428-2261",
"geo": {
"lat": "-38.2386",
"lng": "57.2232"
}
},
"cell_phone": "024-648-3804",
"website": "ambrose.net",
"company": {
"name": "Hoeger LLC",
"catch_phrase": "Centralized empowering task-force",
"bs": "target end-to-end models"
}
}
只要一次执行,就能生成UserModel
AddressModel
GeoModel
和 CompanyModel
四个 models。
产生的UserModel.h
文件如下:
#import <Mantle.h>
#import "AddressModel.h"
#import "CompanyModel.h"
@interface UserModel : MTLModel <MTLJSONSerializing>
@property (nonatomic, copy) NSString *username;
@property (nonatomic, copy) NSString *website;
@property (nonatomic, copy) NSString *email;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSInteger modelId;
@property (nonatomic, strong) AddressModel *address;
@property (nonatomic, strong) CompanyModel *company;
@property (nonatomic, copy) NSString *cellPhone;
@end
只要执行一句:
$ json2mantle user.json output
OK。介绍完毕,再放下地址: https://github.com/sutar/JSON2Mantle
欢迎 star。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.