设置WebView内容

时间:2013-03-18 02:03:58

标签: objective-c json uiwebview

正在使用网络上的JSON休息服务。 JSON有一个名为“content”的属性,它是一个HTML内容,因此JSON文件类似于:

[{
"id":"4205",
"title":"SomeTitle",
"author":"Homero Simpson",
"content":"<html><head></head><body>Había una vez un molinero cuya única herencia para sus tres hijos eran su molino, su <a href='biblioSonidos://soundID=67'>asno</a> y su <a href='biblioSonidos://soundID=69'>gato</a>. Pronto se hizo la repartición sin necesitar de un clérigo ni de un abogado, pues ya habían consumido todo el pobre patrimonio. Al mayor le tocó el molino, al segundo el asno, y al menor el gato que quedaba. El pobre joven amigo estaba bien inconforme por haber recibido tan poquito. 'Mis hermanos' dijo él, 'pueden hacer una bonita vida juntando sus bienes, pero por mi parte, después de haberme comido al gato, y hacer unas sandalias con su piel, entonces no me quedará más que morir de hambre.'  El gato, que oyó todo eso, pero no lo tomaba así, le dijo en un tono firme y serio: 'No te preocupes tanto, mi buen amo. Si me das un bolso, y me tienes un par de botas para mí, con las que yo pueda atravesar lodos y zarzales, entonces verás que no eres tan pobre conmigo como te lo imaginas.'</body></html>"
}]

我需要使用“content”属性中的代码创建一个WebView。 所以,我的问题是: 如何从此JSON属性设置WebView内容? 这可能吗?

1 个答案:

答案 0 :(得分:1)

使用JSONSerialization将JSON文件转换为基础对象(将是NSDictionary)。然后使用loadHTMLString加载内容键的值:

NSError *jsonError = nil;
id json = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:pathToTheJSONFile] options:0 error:&jsonError];
if (json) {
    [webView loadHTMLString:[(NSDictionary *)json objectForKey:@"content"] baseURL:nil];
} else {
    NSLog(@"Error loading JSON: %@", jsonError);
}

(如果您希望内容中的相对链接起作用,请传递适用于baseURL而不是nil的任何内容。)