2009-10-26 63 views
2

我有一个查询字符串:a=1&b=2&c[1]=3&c[2]=4等等解析查询字符串成一个结构化的NSDictionary

我想要的NSDictionary那里a => 1b => 2, c => [3,4]。请注意,c的值是一个数组。它也应该能够处理像c[1][2]=5这样的数组来制作一个数组阵列c => [[5]]

当然,我可以通过分割&=来自己完成,但其他情况如阵列和数组数组又如何呢?我想要一个结构化来自POST请求的NSDictionary查询字符串,如果已经存在,不想重写轮子。

是否有任何类/方法,通过苹果或第三方,将查询字符串解析到结构化的NSDictionary?

回答

6

Google Toolbox for Mac包含一个GTMNSDictionaryURLArgumentsAdditions类别NSDictionary它可以做你想做的。

如果您可以控制查询字符串(在客户端),您可以发送一个编码plist,可以直接解码为NSDictionary

+0

这只提供了一个2d字典:http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/GTMNSDictionary%2BURLArguments.m我将更新与更多的问题更多澄清 – coneybeare 2009-10-26 19:45:24

+0

这是一个非常好的开始。也许你可以看看代码并对其进行子类化,或者用递归调用来复制它? – 2009-10-26 20:14:27

+0

直接发送plist(假设你控制客户端)怎么样?或者使用带有plist负载的POST? – 2009-10-26 20:19:35

1

这可能是矫枉过正在这种情况下,但ParseKit是写在可可可可应用程序的开源符号化/分析工具:

http://parsekit.com

它可能是你的兴趣。

ParseKit干净地分为两个组件:一个Tokenizer,然后是一个构建在其上的高级解析工具包。您可以使用这些组件中的一个或两个来帮助完成这类任务。但是,再一次,ParseKit对于这个相对简单的解析任务可能是矫枉过正的。