我注意到SBJson失敗這個JSON字符串解碼:SBJSon不喜歡[]在JSON字符串字符
[{"JNAME":"VERSION","DATE": "20111012","TIME": "145020"}]
如果我刪除[]中的字符串successuffly解碼,並返回一個NSDictionnary
我的代碼:
不工作(返程無):
SBJsonParser *parser = [[SBJsonParser new] autorelease];
NSError *error = nil;
NSDictionary *dict = [ parser objectWithString:result error:&error ];
工作:
SBJsonParser *parser = [[SBJsonParser new] autorelease];
NSInteger len = [result length];
NSError *error = nil
NSString *result2 = [result substringWithRange:NSMakeRange(1, len - 2) ];
NSDictionary *dict = [ parser objectWithString:result error:&error ];
任何想法爲什麼? (:用PHP前)將字符串解碼成功:因爲如果我使用的在線分析器或他人的Json解碼功能,它奇怪
php > $json = '[{"JNAME":"VERSION","DATE": "20111012","TIME": "145020"}]';
php > print_r(json_decode($json));
Array
(
[0] => stdClass Object
(
[JNAME] => VERSION
[DATE] => 20111012
[TIME] => 145020
)
)
用「[]」會發生什麼?你會得到什麼錯誤? (當然,你會意識到使用「[]」會得到一個數組,而不是字典。) –
你說得對,如果我把它轉換成NSArray而不是NSDictionary,它就可以工作! –
當然我是對的。 JSON解析器返回JSON字符串的任何類型 - 可以是數組,字典或單個字面值int/string/boolean。在一般情況下(您不知道JSON字符串中的內容),您需要在假設任何事情之前測試該類型。 –