2013-02-03 74 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引起了人們的注意,AFJSONRequestOperation使用了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