我有一个Json字符串,它只是Json格式的字符串,如下所示:
@""JSONContent""
有没有办法从这样的JSON字符串中获取内容?我尝试使用下面的代码,但无法将其解析为Dictionary
NSData *jsonData = [rawTime dataUsingEncoding:NSUTF8StringEncoding];
NSError *e;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:nil error:&e];
答案 0 :(得分:1)
首先,如果这是你得到的反应,那么可能它不会被识别为JSON ,因为JSON字符串以'['或<开头strong>'{'字符。因此,它不会被解析。您必须确保从服务器收到的字符串是否采用正确的JSON格式。您可以在此网站上查看JSON字符串验证:jsonlint.com
现在,您尝试过的代码也会因为相同的原因而无法正常工作,即JSON格式不正确。可能有很多原因导致收到的JSON格式错误。您的JSON可能也可能嵌入XML字符串中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
[{"Title":"DemoTitle","CreationDate":"06/06/2014","Description":"DemoDescription"}]
</string>
这只是一个例子。所以这里的结论是:确保你的JSON格式正确,即以'['或'{'开头。
至于解析代码,这可能会对您有所帮助:
NSString *link = [NSString stringWithFormat:@"yourServiceURL"];
NSString *encdLink = [link stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:encdLink];
NSData *response = [NSData dataWithContentsOfURL:url];
NSError *error;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response options: NSJSONReadingMutableContainers error: &error];
这将从服务URL获取JSON响应,然后使用NSJSONSerialization
解析它,最后将数据存储在一个数组中以供进一步使用。
希望这有帮助。