我需要一個易於使用的庫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',它可以做同樣的事情 –