0

JSON文字列を解析するために使用JSONKitしていますが、何らかの理由でJSON文字列をNSDictionaryそれに割り当てようとするとnullが返されます


JSONDecoder *jsonDecoder = [[JSONDecoder alloc] initWithParseOptions:JKParseOptionNone];        
NSData *jsonData = [NSData dataWithBytes:[jsonString UTF8String] length:[jsonString length]];
NSDictionary *tempDict = [jsonDecoder objectWithData:jsonData];

jsonStringコンテンツを保持し、tempDict は等しいNULL

ありがとう!

4

4 に答える 4

2

4.x をサポートしたい場合は、使用しないでください NSJSONSerialization。5.0 でのみ使用できます。

JSONKit代わりに、次のように使用する必要があります。

 NSDictionary *tempDict = [jsonString objectFromJSONString];

JSON 文字列をシリアライズするために NSData に変換する必要はありません。

于 2012-09-29T20:48:49.507 に答える
2

よくわかりませんが、json が有効な json かどうかを確認する必要があります。これにはhttp://jsonlint.com/を使用できます。無効な json が原因で、この同様の問題に直面することがありました。お役に立てれば。

于 2012-09-30T05:22:04.910 に答える
1

jsonKit を使用する理由 iOS には非常に優れた JSONSerialization クラスがあります...次のように使用できます。

NSData *returnData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonParsingError = nil;

NSDictionary *returnDictionary = [NSJSONSerialization JSONObjectWithData:returnData options:0 error:&jsonParsingError];

if (!jsonParsingError) {

    //Do your stuff here

}

幸運を!

于 2012-09-29T20:44:09.040 に答える
-1

NSJSONSerialization を使用するのはどうですか?

NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary * tempDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
于 2012-09-29T20:44:00.050 に答える