2012-01-13 10 views
42

私はNSStringを持っていて、NSJSONSerializationを使用したいのですか?これはどうすればいいですか?NSStringからのNSJSONSerialization

+1

パフォーマンスが優先される場合は、JSONKitを使用する方が良い方法です。 – Danra

+1

NSJSONSerializationの使用に関する良いチュートリアルがhttp://www.raywenderlich.com/5492/working-with-json-in-ios-5です。便宜上、 – dean

答えて

88

まず、あなたは、私がブログを書いた後、単にJSON

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
+3

を使用して、このコードをNSJSONSerializationカテゴリに入れることができます。 – jianpx

+0

「NSJSONSerialization JSONObjectWithData」は、NSError *パラメータを持っていますが、エラーが発生したときに例外をスローする可能性があるため、注意して使用してください。 '@try {} @catch(...)'ブロックで囲むことをお勧めします。 – LaborEtArs

1

あなたが言ってたNSDataにあなたの文字列を変換することができます

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; 

あなたはその後、NSJSONSerializationでそれを使用することができます。ただし、NSJSONSerializationはiOS5のみであるため、TouchJSONやJSONKitなどのライブラリを使用する方がよい場合があります。両方とも、NSDataに変換するステップを省略して、文字列を直接操作できます。

12

NSStringNSDataに変換する必要がある場合は、+[NSJSONSerialization JSONObjectWithData:options:error:]メソッドを使用できます。

NSString * jsonString = YOUR_STRING; 
NSData * data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError * error = nil; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
if (!json) { 
    // handle error 
} 
0

に変換するJSONObjectWithDataメソッドを使用して、次の

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 

を行うことによって、あなたのNSStringNSDataに変換する必要があります。ネイティブiOS JSONクラスを汎用プロトコルでラップし、ネイティブAPIを使用する実装方法を示す記事iOS JSONクラス。

このアプローチでは、ネイティブ機能を使用する方がはるかに簡単になり、作成するコード量が削減されます。さらに、ネイティブの実装が不十分であると判明した場合、JSONKitなどのネイティブ実装を切り替えるほうがずっと簡単です。

http://danielsaidi.com/blog/2012/07/04/json-in-ios

のブログ記事はあなたが必要とするすべてのコードが含まれています。ちょうどコピー/貼り付け:)

希望する!

+0

ありがとう!それを修正! –

+0

投稿は5歳ですのでご注意ください:) –

関連する問題