在Objective-C中有没有类似于gson的东西?
谢谢。
DCKeyValueObjectMapping https://github.com/dchohfi/KeyValueObjectMapping 不是一个 JSON 解析器,而是一种对象-JSON 映射器,可以将 NSObject 属性从 NSDictionary/NSArray 中注入。
@interface MyModel : NSObject
@property(nonatomic,strong) NSString *name;
@property(nonatomic,strong) NSString *address;
@end
{
"name":"marc",
"address":"1234 Some Street"
}
for (NSString *key in dict) {
[self setObject:dict[key] forKey:key];
}
在Java中,GSON使用反射技术来实现与上述循环相同的效果。但是,在Objective-C中,这个过程要容易得多,因此不需要使用库来完成。如果您有嵌套对象,则可以使用AFNetworking和DCKeyValueObjectMapping。
{
"firstName" : "FirstName",
"lastName" : "LastName",
"age" : 26,
"dateOfBirth" : "01/01/2013",
"address" : {
"city" : "San Diego",
"country" : "US"
},
"posts" : [
{
"title" : "Post 1 title",
"datePosted : "04/15/2013",
},
{
"title" : "Post 2 title",
"datePosted : "04/12/2013",
}
]
}
模型
@objc public class User: NSObject {
var firstName: String?
var lastName: String?
var age: NSNumber?
var dateOfBirth: NSDate?
var address: Address?
var posts: [Post]?
}
使用 Swift
let user = ObjectMapper.sharedInstance().objectFromSource(dict, toInstanceOfClass:User.self) as User
or
let User = User.objectFromDictionary(dictionary)
使用Objective-C
User *user = [[ObjectMapper sharedInstance] objectFromSource:dictionary toInstanceOfClass:User.class];
or
User *user = [User objectFromDictionary:dictionary];
struct YourStructure: Codable {
let name: String?
let avatarUrl: URL?
private enum CodingKeys: String, CodingKey {
case name
case avatarUrl = "avatar_url"
}
}
解码器:
let decoder = JSONDecoder()
parsedData = decoder.decode(YourStructure.self, from: YourJsonData)
编码:
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(data)
更多信息:编码和解码自定义类型
OCMapper 是我知道的最好、最容易使用的库,它还具有反向映射功能,并且可以映射复杂对象而无需配置,同时也能与 realmObjects 兼容。
我认为我已经找到了几个可以实现这个目的的库,但最重要的一个似乎是RestKit