2013-04-16 12 views
5
{"User":{"id":"42","name":"martin"}} 

nilを返すには、しかし、この方法は、完全に有効と思われるこのJSONを返します。NSJSONSerializationはNSStringのに自分のNSDataを変換

誰かが間違いを指摘することができましたか、これが起こっている理由を作ったか、考えてください。

答えて

9

たとえば、文字列に印刷できない文字があり、データが無効になっていると思います。あなたのデータは無効と見なされた場合、明らかに、それはnilを返しますが、少なくともあなたはその後NSError* error変数に間違っているかの説明があります:

はJSONを変換しようとする[NSJSONSerialization JSONObjectWithData:data options:0 error:&error]メソッドを呼び出して、その後NSError* error変数を宣言します。

NSData* data = ... // your data 
NSError* error = nil; // Declare a variable to hold the error upon return 
id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; // Try to convert your data 
NSLog(@"obj: %@ ; error: %@", error); // Log the decoded object, and the error if any 
+0

私はエラーを入れて、それは何とか突然働いていました...どうやらそれは今でも動作します! – Alex

+0

私は同じ問題を抱えていました: '(キャラクタ43579の周囲にエスケープされていない制御キャラクタ)UserInfo = 0x9b78e30 {NSDebugDescription =キャラクタ43579の周囲にエスケープされていない制御キャラクタ。どうすれば修正できますか? – marciokoko

+0

JSONオリジナルデータを修正します。私はあなたが解読しようとしているJSONが最初に有効なJSONデータではなく、エラーが説明しているようにオフセット43579で無効な文字を持っていると思います。 http://jsonlint.org/にJSONを貼り付けて、無効なJSONや不正な形式のJSONなどを確認してください。もしそれが有効なJSONでないなら、あなたは明らかにそのソースから修正する必要があります(このファイルから 'NSData'を読んでいるなら' file.json'の内容を修正するか、WebServerが生成した文字列を修正してくださいこのJSONをこのNSDataなどにあなたのアプリに返すWebサービス)_ – AliSoftware

関連する問題