从只有字符串的json对象中获取字符串

时间:2014-08-03 05:36:45

标签: ios objective-c json

我有一个Json字符串,它只是Json格式的字符串,如下所示:

@""JSONContent""

有没有办法从这样的JSON字符串中获取内容?我尝试使用下面的代码,但无法将其解析为Dictionary

NSData *jsonData = [rawTime dataUsingEncoding:NSUTF8StringEncoding];
NSError *e;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:nil error:&e];

1 个答案:

答案 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解析它,最后将数据存储在一个数组中以供进一步使用。

希望这有帮助。