Convert an object into Json using SBJson or other JSON library

136183 ワード

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;
}