3
NSDSONSerialization과 SBJsonWriter를 여러 번 사용하여 동일한 NSDictionary 객체를 NSData로 변환하고 다른 문자열을 얻으려고했습니다. 심지어 null. 그것은 아주 이상하고 어떤 이유도 찾을 수 없습니다. = (NSJSONSerialization과 SBJson이 이상하게 작동합니다.
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)
출력은 내가 테스트를 실행할 때마다 변경 ... JSONKit 및 YAJL는..
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]);
}
을 내 테스트 코드를 다음 을이 같은 문제를 가지고 있지 않습니다 콘솔 출력은 코드입니다. 데이터의 바이트 크기는 동일하지만, UTF8 변환 문자열 길이가 달라집니다.
좋은 답변입니다! 나는 방금 OP의 코드를 실행하고 정확하게 당신이 옳다고 생각했습니다. NSData는 매번 동일하게 생성되며 실패한 NSString을 생성합니다. 아마도 데이터의 끝을 넘어서는 바이트가 작동하는 경우에는 '\ 0'이 발생했을 것입니다. – mttrb
사실,'stringWithUTF8String :'이 nil을 반환하는 경우 올바르지 않은 UTF-8 바이트 시퀀스와 베일을 발견했습니다. – warrenm
합리적인 설명처럼 들립니다. – mttrb