我目前正在使用jackson 2.1.4,当我将对象转换为JSON字符串时,我在忽略字段时遇到了一些麻烦.
这是我的类,它充当要转换的对象:
public class JsonOperation {
public static class Request {
@JsonInclude(Include.NON_EMPTY)
String requestType;
Data data = new Data();
public static class Data {
@JsonInclude(Include.NON_EMPTY)
String username;
String email;
String password;
String birthday;
String coinsPackage;
String coins;
String transactionId;
boolean isLoggedIn;
}
}
public static class Response {
@JsonInclude(Include.NON_EMPTY)
String requestType = null;
Data data = new Data();
public static class Data {
@JsonInclude(Include.NON_EMPTY)
enum ErrorCode { ERROR_INVALID_LOGIN, ERROR_USERNAME_ALREADY_TAKEN, ERROR_EMAIL_ALREADY_TAKEN };
enum Status { ok, error };
Status status; …Run Code Online (Sandbox Code Playgroud) 我将JSON映射到基础对象时遇到问题...
当JSON字符串不包含该键时,有没有办法将"nil"值放到类成员变量上?
例如,这是我的DataModel类:
@interface DataModel : JSONModel
@property (strong, nonatomic) NSString* Status;
@property (strong, nonatomic) NSString* ErrorCode;
@property (strong, nonatomic) ClientModel* Client;
@end
Run Code Online (Sandbox Code Playgroud)
该类用于解析ClientModel对象中有关客户端的一些信息,并具有ErrorCode和Status字段.
状态字段可以包含"确定"或"错误".这里没问题.如果json包含"Error"作为状态,则下一个字段是ErrorCode.
问题是服务器不会总是向我发送ErrorCode的键值(当状态为"Ok"时,服务器API不发送ErrorCode键值).
考虑到我无法修改服务器发送的JSON,如何解析我的模态对象中收到的JSON字符串,并在JSON字符串不包含时将"nil"作为ErrorCode值?
有没有允许我们这样做的图书馆?我目前正在使用JSONModel,但是当缺少密钥时,它给出了"传入数据无效"错误.我知道用于java的Jackson API处理这种情况,但我不知道在Objective-C中是否有类似的东西.如果我可以使用NSJSONSerialization进行解决方法,我也很高兴听到它.
谢谢!
通常,当您在类声明中声明方法并在外部定义它时,您需要指定其范围.
由于我已经读过运算符是非常常规的方法,我发现很难理解以下行为:
class A
{
public:
A(int x)
{ this->x = x;}
int foo();
friend const A operator+ (const A& left,const int right);
private:
int x;
};
const A operator+ (const A& left,const int right) //can't be A::operator+
{
return A(left.x + right);
}
int A::foo() // A:: is needed here
{
return 5;
}
int main(int argc, char **argv) {
A a(1);
a = a + 4;
a.operator =(a+5);
a.foo();
}
Run Code Online (Sandbox Code Playgroud)
为什么我们不需要指定我们定义\ overloading的"operator +"?是从操作数推断出来的吗?