3
同じNSDictionaryオブジェクトをNSDataに変換した後、NSJSONSerializationとSBJsonWriterを何度か使ってNSStringを変換しようとしましたが、時々別の文字列があります。偶数ヌル。それは非常に奇妙で、私は何らかの理由を見つけることができません。 =(JSONKitとYAJLは、このような問題を持っていません。 後、私のテストコードです。NSJSONSerializationとSBJsonが奇妙に動作する
for (int i = 0; i < 5; i++) {
NSDictionary *d = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
NSData *data = [NSJSONSerialization dataWithJSONObject:d options:0 error:nil];
NSLog(@"%@", [NSString stringWithUTF8String:data.bytes]);
}
とコンソール出力される...
2012-04-25 01:35:33.113 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] (null)
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.114 Test[19347:c07] {"key":"value"}
2012-04-25 01:35:33.115 Test[19347:c07] (null)
出力は、私がテストを実行するたびに変更NSData
オブジェクト内のコード。 データのバイトサイズは同じですが、UTF8変換文字列の長さが変化する。
私はちょうどOPのコードを実行するプレイを持っていたし、間違いなくあなたが正しいと思う。 'NSData'は毎回同じように作成され、失敗している' NSString'の作成です。おそらく、データの終わりを越えるバイトが動作した場合には、たぶん '\ 0'となるでしょう。 – mttrb
確かに、 'stringWithUTF8String:'がnilを返す場合、無効なUTF-8バイトシーケンスとbailsが見受けられますが、これは適切な動作です。 – warrenm
妥当な説明のように聞こえます。 – mttrb