2013-02-03 9 views
5

奇妙なUTF-8文字列を持つJSONを受け取っています。例:iOSのJSONでUTF-8を正しく処理する

{ 
    "title": "It\U2019s The End"; 
} 

このデータを処理して読み取り可能な方法で表示するには、どのような方法が最適ですか?その\ U2019をそれが表すはずの引用符に変換したいと思います。

編集: 私はNSStringの* jsonResult

編集2に文字列を解析されていると想定します

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSString* jsonResult = [JSON valueForKeyPath:@"title"]; 
} failure:nil]; 
+0

どのようにjsonを解析しますか? –

+0

私は、JSONがどこから来ているかを示すために質問を更新しました。 – hodgesmr

+0

http://stackoverflow.com/questions/10838372/objective-c-nsstring-not-being-entirely-decoded-from-utf-8 –

答えて

5

更新:

クルト私はAFNetworkingてJSONを受けていますフードの下にNSJSONSerializationを使用していることが注目されています。このように、それはおそらくあなたのJSONは、後述するように(、;があってはならない、とUは小文字uする必要があります。これは、以下のオリジナルの答えで述べた無効である場合です。


これは、JSONがデータを保存する方法の一部です.JSON文字列をJSONパーサーに渡す必要があります。

注:投稿したJSON上記の例は無効です。最後にセミコロンは使用しないでください。Uは小文字のUにする必要があります。下の例では、変更されたJSON文字列

NSString* str = @"{\"title\": \"It\\u2019s The End\"}"; 

NSError *error = nil; 
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *rootDictionary = [NSJSONSerialization JSONObjectWithData:data 
                   options:0 
                   error:&error]; 
if (error) { 
    // Handle an error in the parsing 
} 
else { 
    NSString *title = [rootDictionary objectForKey:@"title"]; 
    NSLog(@"%@", title); //Prints "It’s The End" 
} 
+0

OPは、AFJSONRequestOperationを使用していると言いました。内部的に ' NSJSONSerialization'。したがって、おそらく問題は無効なJSONだけです。 –

+0

AFJSONRequestOperationの内部を認識していないので、これを反映する答えを修正します。 – WDUK

関連する問題