Khi làm việc với dữ liệu JSON tôi có xu hướng phải rất cẩn thận. Hãy nói rằng tôi có một JSON deserialized vào một NSDictionary. Với điều đó, tôi cần phải kéo một chuỗi liên kết với khóa "URL" ra khỏi từ điển và biến nó thành một NSURL. Ngoài ra, tôi không tự tin 100% trong JSON hoặc giá trị chuỗi.
tôi sẽ làm một cái gì đó như thế này:
NSURL *URL = nil;
id URLObject = [JSON valueForKey:@"URL"];
if ([URLObject isKindOfClass:[NSString class]] && [URLObject length] > 0) {
URLObject = [URLObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URLObject = [URLObject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URL = [NSURL URLWithString:URLObject];
}
Sau này, URL sẽ phải hoặc là một con số không hoặc một URL hợp lệ. -isKindOfClass: loại bỏ giá trị là một NSDictionary, NSArray, NSNumber hoặc NSNull. -length> 0 lọc ra chuỗi rỗng (như bạn biết, có thể làm hỏng một NSURL). Paranoia thêm giải mã sau đó mã hóa lại các URL thoát sẽ xử lý các URL được mã hóa một phần.
Nguồn
2012-05-17 14:26:40
Nó đã được phân tích cú pháp chưa? Url có phải là NSURL hoặc NSString không? –
URL là url .. – Jones
Có, nhưng loại đối tượng là gì? Từ câu trả lời được chấp nhận, có vẻ như đó là NSString –