2012-02-08 215 views
0

在来自Web服务的JSON响应中,字符串包含HTML字符。 例如“text”:“\ x3ca href \ x3d \ x22http:// word ....”等等等等解析JSON字符串IOS - HTML字符

我正在使用SBJSON解析器。解析(转换为字典)失败。

我想我需要在给予SBJSON解析器之前用实际字符替换这些HTML字符。有相同的实用方法吗?

任何帮助真的很感激。

-mia

回答

0

您的第一个JSON字符是错误的。 '\ x3ca'不是有效的JSON字符。你的编码出错了。 '<'的JSON等效项是'\ x3c'。 如果你在'\ x3ca'替换'\ x3c',你会得到解析结果 “< href =”http:// word ...“ 我的建议是检查Web服务如何编码特殊字符,如<,>,&,=等等在它发送响应我认为这是其中误差是

(而作为一个括号,这些都是JSON字符,而不是HTML字符:P)。

+0

首先它不是我的Web服务器冰 :-)。它来自谷歌非官方字典API的响应。你的建议工作正常(谢谢你),但解析仍然失败。我试过这样 - NSString * temp = @“{\”text \“:\”\ x3c href \ x3d \ x22http:// word .... \“}”; NSDictionary * tempdict = [parser objectWithString:temp error:nil]; NSLog(@“json string =%@”,temp); NSLog(@“converted dict =%@”,tempdict); AND oupput is json string = {“text”:“ mia 2012-02-08 09:08:23

+0

尝试使用错误参数,看看它说什么。在你的例子尝试像这样:NSError * error = nil; NSString * temp = yourString; NSDictionary * tempDict = [解析器objectWithString:温度错误:&错误];并记录错误 – Vlad 2012-02-08 09:57:25

+0

这是错误“error = Error Domain = org.brautaset.SBJsonParser.ErrorDomain Code = 0”标记[h]的非法开始“UserInfo = 0x6b2e960 {NSLocalizedDescription =标记[h]的非法开始} – mia 2012-02-10 08:42:10

0

SBJSON期望的钥匙被包含在“”,否则它会抱怨无论第一个钥匙的第一个字符。