Convert an object into Json using SBJson or other JSON library

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

The .h file,

@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,

    - (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,

- (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;
}
posted @ 2012-04-04 12:54  阿新  阅读(440)  评论(0编辑  收藏  举报