jsonデータから作成されたバイト配列でgetリクエストに応答するサーブレットを作成しました。このデータをiOSで使用し、NSJSONSerializationを使用してNSDictionaryに解析しようとしていますが、次のエラーで失敗します
Error Domain = NSCocoaErrorDomain Code = 3840 "操作を完了できませんでした。(Cocoaエラー3840。)"(文字11の周りのオブジェクトのキーが重複しています。)UserInfo = 0x6833200{NSDebugDescription=文字11の周りのオブジェクトのキーが重複しています。}
これが私のコードです:
NSString *query = @"http://localhost:8888/url?method=retrieve";
NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:query]];
NSError *error = nil;
NSString *stringData = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"substring to index 255: %@", [stringData substringToIndex:255]);
NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:[stringData dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error] : nil;
NSLog(@"Response as Dictionary:\n%@", results.description);
if (error) {
NSLog(@"Error: %@", error);
}
stringDataの値は
{"APPEALS":{"APPEAL":{"AppealID":387423483、 "LastEdit":"1...。
エラーがあるため、Dictionaryとしての応答は明らかに(null)を返します。これは、サーバーが出力ストリームのデータをbyte [](java)として送信し、次のように正しくフォーマットされていないという事実と関係があると推測しています。 jsonをiOSで受信した場合、文字11 ":"で失敗する理由はわかりません。参考までに、サーバーはJavaのGoogle App Engineで記述されており、ローカルホストのurlはローカル開発サーバーです。jsonデータは、JacksonGeneratorライブラリを使用して作成されました。ありがとう!