2016-08-02 2 views
0

私は文字列にシリアル化する必要があるjsonapiオブジェクトを持っています。空のjsonapiオブジェクトをシリアル化するには

{\n \"data\" : [\n\n ]\n} 

が、これはこれは私が文字列にJSONオブジェクトを変換するために使用していたコードである

Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** +[NSJSONSerialization dataWithJSONObject:options:error:]:  
Invalid top-level type in JSON write' 

エラーが発生します。

NSError * error; 
NSData * jData = [NSJSONSerialization dataWithJSONObject:[notification.userInfo objectForKey:@"data"] 
options:NSJSONWritingPrettyPrinted error:&error]; 

NSString *jString = [[NSString alloc] initWithData:jData encoding:NSUTF8StringEncoding]; 

は、誰かがこれで私を助けることを願って(\と\ nを手動で削除する必要はありません

+0

ここで何か、誰かが非常に、非常に混乱しています。あなたが表示したのは、JSONドキュメントが文字列に変換され、JSONドキュメントが単一のキー "data"を持つ辞書と、空の配列である単一の値です。私はあなたが実際にやろうとしていることは少しも考えていません。 – gnasher729

+0

json辞書が実際に値を保持しているときは問題ありません。配列を削除して送信すると、これが起こります。 icアノテーションで解決すれば、空のオブジェクトの値を渡す別のメソッドを呼び出さなければなりません。 – s5v

答えて

1

jsonオブジェクトを文字列に変換するには、まずNSDataに入り、次にNSUTF8StringEncodingのエンコーディングを使用してNSStringに変換します。

NSDictionary *jsonDict = {\n \"data\" : [\n\n ]\n} 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding] 
+0

私のポストは理解できませんでしたかどうかわかりませんが、私がやったことは何ですか?そしてそれはエラーを投げていました。 – s5v

+0

あなたの編集を見ました。あなたはこれをデバッグし、それが正しいことを確認しました '[notification.userInfo objectForKey:@" data "]'? –

+0

解決済み。ありがとうございました。 – s5v

関連する問題