1

JSON文字列を辞書に解析しようとしています。そのために、次のコードを使用します。

NSDictionary* json = [NSJSONSerialization JSONObjectWithData:json_string];

これにより、次のエラーが表示されます。

+[NSJSONSerialization JSONObjectWithData:]: unrecognized selector sent to class...

Applesのドキュメントを検索したところ、クラスがFoundationフレームワークに含まれていることがわかりました(そのフレームワークがプロジェクトに含まれています)。なぜこれが起こっているのかわかりません。

何か案が?ありがとうございます。

4

3 に答える 3

10

いくつかの引数を忘れました:

NSError *error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:json_string options:0 error:&error];

NSDataまた、最初の引数は文字列ではなくオブジェクトであることに注意してください。

于 2013-04-17T17:24:36.040 に答える
4

完全なセレクターはJSONObjectWithData:options:error:であるため、2 つの引数が欠落しているようです。これに似たものを試してください:

NSError *error = nil;
NSData *jsonData = [rawJSONString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options: kNilOptions error:&error];

これはNSData引数ではなく引数を取り、NSString常に を返すとは限らないことに注意してください。それはまたは別の Foundation オブジェクトNSDictionaryである可能性があります。NSArray本番での使用では、それが有効なオブジェクトerrorであると信頼する前に、引数を確認する必要があります。jsonObject

于 2013-04-17T17:27:38.010 に答える
4

ドキュメントによると、まず文字列を NSData オブジェクトに変換し、NSJSONSerialization の正しいクラス メソッドを呼び出す必要があります。次のことができます。

NSData *stringData=[json_string dataUsingEncoding:NSUTF8StringEncoding];
NSError *jsonError=nil;
NSDictionary *dictionary =[NSJSONSerialization  JSONObjectWithData:stringData options:0 &jsonError];

何か問題があった場合は、jsonError で何が問題なのかに関するヒントを確認してください。うまくいけば、辞書に json_string 情報が取り込まれます。

于 2013-04-17T17:27:51.933 に答える