Convert an object into Json using SBJson or other JSON library

2018-04-12 15:59:00 浏览数 (1)

Using SBJson, to convert a object to JSON string, you have to override the proxyForJson method. Like the following,

The .h file,

代码语言:javascript复制
@interface MyCustomObject : NSObject {
    NSString *receiverFirstName;
    NSString *receiverMiddleInitial;
    NSString *receiverLastName;
    NSString *receiverLastName2;
}
@property (nonatomic, retain) NSString *receiverFirstName;
@property (nonatomic, retain) NSString *receiverMiddleInitial;
@property (nonatomic, retain) NSString *receiverLastName;
@property (nonatomic, retain) NSString *receiverLastName2;

- (id) proxyForJson;
- (int) parseResponse :(NSDictionary *) receivedObjects;
}

In the implementation file,

代码语言:javascript复制
    - (id) proxyForJson {

        return [NSDictionary dictionaryWithObjectsAndKeys:
            receiverFirstName, @"ReceiverFirstName",
            receiverMiddleInitial, @"ReceiverMiddleInitial",
            receiverLastName, @"ReceiverLastName",
            receiverLastName2, @"ReceiverLastName2",
            nil ];
    }

And to get the object from the JSON string you have to write a parseResponse method like this,

代码语言:javascript复制
- (int) parseResponse :(NSDictionary *) receivedObjects {
    self.receiverFirstName = (NSString *) [receivedObjects objectForKey:@"ReceiverFirstName"];
    self.receiverLastName = (NSString *) [receivedObjects objectForKey:@"ReceiverLastName"];

    /* middleInitial and lastname2 are not required field. So server may return null value which
     eventually JSON parser return NSNull. Which is unrecognizable by most of the UI and functions.
     So, convert it to empty string. */ 
    NSString *middleName = (NSString *) [receivedObjects objectForKey:@"ReceiverMiddleInitial"];
    if ((NSNull *) middleName == [NSNull null]) {
        self.receiverMiddleInitial = @"";
    } else {
        self.receiverMiddleInitial = middleName;
    }

    NSString *lastName2 = (NSString *) [receivedObjects objectForKey:@"ReceiverLastName2"];
    if ((NSNull *) lastName2 == [NSNull null]) {
        self.receiverLastName2 = @"";
    } else {
        self.receiverLastName2 = lastName2;
    }

    return 0;
}

0 人点赞