弄清楚爲什麼你的JSON解析失敗,您768,16使用這種方法:
NSError *error = nil;
NSString * jsonTest = [[[SBJsonWriter alloc] init] stringWithObject:jsonTestDictionary error:&error];
if (! jsonTest) {
NSLog(@"Error: %@", error);
}else{
NSLog(@"%@", jsonTest);
}
下面是一個簡單的代碼演示如何使用它:
#import <Foundation/Foundation.h>
#import "SBJsonWriter.h"
#import "SBJsonParser.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSDictionary* aNestedObject = [NSDictionary dictionaryWithObjectsAndKeys:
@"nestedStringValue", @"aStringInNestedObject",
[NSNumber numberWithInt:1], @"aNumberInNestedObject",
nil];
NSArray * aJSonArray = [[NSArray alloc] initWithObjects: @"arrayItem1", @"arrayItem2", @"arrayItem3", nil];
NSDictionary * jsonTestDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"stringValue", @"aString",
[NSNumber numberWithInt:1], @"aNumber",
[NSNumber numberWithFloat:1.2345f], @"aFloat",
[[NSDate date] description], @"aDate",
aNestedObject, @"nestedObject",
aJSonArray, @"aJSonArray",
nil];
// create JSON output from dictionary
NSError *error = nil;
NSString * jsonTest = [[[SBJsonWriter alloc] init] stringWithObject:jsonTestDictionary error:&error];
if (! jsonTest) {
NSLog(@"Error: %@", error);
}else{
NSLog(@"%@", jsonTest);
}
}
return 0;
}
輸出
{
"aDate":"2012-09-12 07:39:00 +0000",
"aFloat":1.2345000505447388,
"nestedObject":{
"aStringInNestedObject":"nestedStringValue",
"aNumberInNestedObject":1
},
"aJSonList":["arrayItem1","arrayItem2","arrayItem3"],
"aString":"stringValue",
"aNumber":1
}
說明:
- 使用「錯誤」讓我弄清楚,如果你寫[NSDate的 日期]而不是[NSDate的日期]描述]你會得到「不支持 __NSTaggedDate JSON序列化 」錯誤。
- 通知浮舍入誤差... 1.2345成爲1.2345000505447388
感謝,所以我應該使用字典對象,而不是武斷的或有另一種方式來得到這個工作??? – donito 2011-05-27 13:03:52
@donito是的,我認爲使用字典存儲您的數據將是最簡單的方法。或者,您可以從客戶讀取要轉換爲JSON的數據,並將對象地址轉換爲中間字典,然後從中生成JSON表示。這樣你就不需要放棄你的自定義類。 – hennes 2011-05-27 13:46:40
謝謝,但我已經將代碼轉換爲使用字典對象。它工作正常。謝謝您的幫助。 – donito 2011-05-27 13:55:55