我需要一个易于使用的库whit例子,用于将NSObject转换为JSON并再次返回,我在网络上发现了大量解析JSon的解析示例,但不是太多使用SBJSON将NSObject转换为JSON,Anybody body有一个很好的教程或将NSObject转换为JSON的示例代码?使用SBJson或其他JSON库将对象转换为Json
2
A
回答
12
使用SBJson
,要将对象转换为JSON字符串,必须重写proxyForJson
方法。像下面,
.h文件,
@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;
}
在实现文件中,
- (id) proxyForJson {
return [NSDictionary dictionaryWithObjectsAndKeys:
receiverFirstName, @"ReceiverFirstName",
receiverMiddleInitial, @"ReceiverMiddleInitial",
receiverLastName, @"ReceiverLastName",
receiverLastName2, @"ReceiverLastName2",
nil ];
}
,并从JSON字符串获取对象,你必须写一个parseResponse
方法是这样,
- (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;
}
13
与SBJSON,它非常简单。
NSString *myDictInJSON = [myDict JSONRepresentation];
NSString *myArrayInJSON = [myArray JSONRepresentation];
当然,走另一条路数组,这样做:
NSDictionary *myDict = [myDictInJSON JSONValue];
NSArray *myArray = [myArrayInJSON JSONValue];
2
从JSON字符串对象:
SBJsonParser *parser = [[SBJsonParser alloc] init];
// gives array as output
id objectArray = [parser objectWithString:@"[1,2,3]"];
// gives dictionary as output
id objectDictionary = [parser objectWithString:@"{\"name\":\"xyz\",\"email\":\"[email protected]\"}"];
从对象到JSON字符串:
SBJsonWriter *writer = [[SBJsonWriter alloc] init];
id *objectArray = [NSArray arrayWithObjects:@"Hello",@"World", nil];
// Pass an Array or Dictionary object.
id *jsonString = [writer stringWithObject:objectArray];
相关问题
- 1. 将JSON转换为其他JSON
- 2. 使用jackson将json转换为对象
- 3. 将对象转换为json?
- 4. 将对象转换为json
- 5. 如何将其他代码转换为json(或其他)格式?
- 6. JSON - 将对象转换为JSON数组
- 7. 将JSON对象转换为JSON数组
- 8. 将JSON对象转换为JSON阵列
- 9. 将JSON对象转换为C#对象
- 10. 将jcas对象转换为json对象
- 11. 将javascript对象转换为json对象
- 12. JSON响应并将其转换为JSON对象
- 13. 如何使用SBJSON iPhone SDK将数据转换为JSON格式?
- 14. 如何将SimpleOrderedMap转换为JSON字符串或JSON对象?
- 15. 在android中使用gson将json数组转换为json对象?
- 16. 如何使用json jbuilder将模型转换为json对象?
- 17. 使用JSON gem将自定义对象转换为JSON
- 18. 如何使用JavaScript将JSON字符串转换为JSON对象?
- 19. 将C#对象转换为JSON或Javascript对象
- 20. 在PHP中将对象转换为JSON和JSON到对象
- 21. 将Leptonica Pix对象转换为QPixmap(或其他图像对象)
- 22. 如何使用JAXB将属性对象转换为JSON对象
- 23. 如何将JSON数组或JSON对象转换为对象列表?
- 24. 当将json对象转换为字符串或字节时,Json对象包含转换为“\ n”的换行符
- 25. 如何使用Scala将普通类转换为JSON并将其转换为JSON?
- 26. 从JSON转换为对象
- 27. java转换为json对象
- 28. 将json格式转换为其他数组类型json格式
- 29. 将ExecutionResult对象转换为json
- 30. 将PDO对象转换为Javascript JSON
母猪它只接受字典或数组的转换?如果是的话,是一种方法来转换一个NSObject的dictonary或我必须创建manualy? – Radu
默认情况下,我相信如此。从逻辑上讲,它也应该接受铸造的子类,就像这样:'[(NSDictionary *)myCustomDict JSONRepresentation]',只要你的子类没有对类的基础做任何改变。 –
然而,它不会在任何任意的NSObject上工作,因为NSObject不是(必然)一组键/值对或列表。为了做到这一点,我会建议迭代NSObject的值,并使NSDictionary不在此范围内。或者,如果你是NSObject的子类化,可能考虑有一个方法'-dictionaryForm',它可以做同样的事情 –