Objective-C Json反序列化(空值不能反序列化)
Posted
技术标签:
【中文标题】Objective-C Json反序列化(空值不能反序列化)【英文标题】:Objective-C Json Deserializing (null values cannot be deserialized) 【发布时间】:2013-12-16 21:04:58 【问题描述】:我正在从 ios 向我的网络服务发布 http 帖子,该服务是在 .NET 平台上编写的。
我使用JSONModel 进行序列化/反序列化,使用AFNetworking 发出http 请求。
我可以提出请求并成功获得响应。但是当响应数据上的任何变量为空时,就会出现问题。
这是我如何调用我的网络服务:
NSDictionary *parameters = @@"Username":username,@"Password":password;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"<my_url>" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
// Request succeeded.
LoginResponse *response =[[LoginResponse alloc]initWithDictionary:responseObject error:nil];
// !!! "response" is null here because of Message on response data is null.
failure:^(AFHTTPRequestOperation *operation, NSError *error)
// Request failed.
];
这是我的LoginResponse.h
文件:
@interface LoginResponse : JSONModel
@property (nonatomic, strong) NSString *IsSuccess;
@property (nonatomic, strong) NSString *Message;
@end
这是我通过 Fiddler 请求时 Web 服务返回的内容:
"IsSuccess":true,"Message":null
由于我的响应数据有空值,反序列化不起作用。当我从LoginResponse.h
文件中删除(因为响应数据上的消息为空)@property (nonatomic, strong) NSString *Message;
行时,反序列化工作正常。
我不关心响应数据是否有空变量,我只想反序列化它。我无法估计问题是什么。为什么响应具有空变量时反序列化不起作用?
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:在LoginResponse
中声明Message
可选:
@property (nonatomic, strong) NSString<Optional>* Message;
请参阅JSONModel docs 了解更多信息。
【讨论】:
糟糕,我错过了!谢谢。以上是关于Objective-C Json反序列化(空值不能反序列化)的主要内容,如果未能解决你的问题,请参考以下文章
将 Objective-C 对象序列化和反序列化为 JSON
Objective-C Mantle,反序列化 JSON 字典
Flutter - 提取到 FutureBuilder 的 JSON 反序列化数据返回空值