使用NSSerlization解析URL编码字符串中的内容

时间:2013-02-27 18:03:06

标签: iphone ios json

我在test.html文件中有以下内容

<a href="http://playSound/?arguments=%7B%20soundID%3A%20%E2%80%9CDOG%E2%80%9D%2C%20foreground%3A%20false%2C%20loop%3A%20true%20%7D">SHOULD PLAY DOG IF YOU CLICK ME!</a>

我已经在iOS模拟器上加载了html,我想解析它并让DOG将它传递给我的函数,所以它可以播放DOG,而不需要硬编码。

我该怎么做?我是Objective-C的新手,需要有关代码和编码结构的帮助。

到目前为止,我只将html内容加载到模拟器,我已经使用URL编码从JSON获取此URL。我接下来的步骤是使用NSSerlization来解析“DOG”。

1 个答案:

答案 0 :(得分:1)

如果您有URL解码的参数,那么您将拥有一个如下所示的字符串:

{ soundID: “DOG”, foreground: false, loop: true }

假设您将其加载到NSString中,您可以从中获取NSDictionary。

NSString *string = @"{ soundID: “DOG”, foreground: false, loop: true }";
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];

现在,您可以轻松获得SoundID。

NSString *soundID = dictionary[@"soundID"];

编辑:

要检索参数GET变量,假设你有这样的URL:

NSString *url = @"<a href="http://playSound/?arguments=%7B%20soundID%3A%20%E2%80%9CDOG%E2%80%9D%2C%20foreground%3A%20false%2C%20loop%3A%20true%20%7D">SHOULD PLAY DOG IF YOU CLICK ME!</a>";

您可以像这样拆分它并获取URL解码参数以与上面的代码一起使用:

NSArray *urlComps = [url componentsSeparatedByString:@"arguments="];
NSString *arguments = [urlComps[1] componentsSeparatedByString:@"\""][0];
arguments = [arguments stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];