Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标C:如何将嵌套的NSDictionary和NSArray转换为URL编码的字符串_Objective C_Url_Post_Nsarray_Nsdictionary - Fatal编程技术网

Objective c 目标C:如何将嵌套的NSDictionary和NSArray转换为URL编码的字符串

Objective c 目标C:如何将嵌套的NSDictionary和NSArray转换为URL编码的字符串,objective-c,url,post,nsarray,nsdictionary,Objective C,Url,Post,Nsarray,Nsdictionary,我有一个Symfony2项目,同时提供JQuery Web客户端和Objective C iPhone应用程序 JQuery正确地将其URL编码的数据发送到服务器。使用$this->getRequest()->get('myKey')在Symfony2控制器中正确访问的数据 因此,数据在应用程序/x-www-form-urlencoded中发送 为了不改变我的Symfony控制器(这恰好是我系统的整个API,有大约200个AJAX调用,形式与我之前描述的相同),我希望Objective C以完全

我有一个Symfony2项目,同时提供JQuery Web客户端和Objective C iPhone应用程序

JQuery正确地将其URL编码的数据发送到服务器。使用
$this->getRequest()->get('myKey')在Symfony2控制器中正确访问的数据

因此,数据在
应用程序/x-www-form-urlencoded
中发送

为了不改变我的Symfony控制器(这恰好是我系统的整个API,有大约200个AJAX调用,形式与我之前描述的相同),我希望Objective C以完全相同的方式发送数据

我得到了一部分。我的意思是,我知道如何将简单的NSDictionary转换为URI参数格式。这就是代码(感谢Michael Sivolobov)

但我知道的问题是如何以类似的方式转换一些更复杂的数据。例如嵌套的NSArray和NSDictionary(在使用JSON时非常常见)。任何人都知道在目标C中将这些数据转换为URL(key1=value1&key2=value2等)的方法吗

编辑:我需要通过url发送的数据示例

NSArray *myArray = [NSArray arrayWithObjects: @"Value2", @"Value3", nil];
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys: @"Value1", @"key1", myArray, @"Value2"];
JSON中的内容应该是
{“key1”:“value1”,“key2”:[“value2”,“value3”]}


在Objective C中,获得该结构并在将其传递到Http POST之前将其转换为URLencode的最佳方法是什么?我以为会有一些JSON或Cocoa方法。。。但是没有什么…

天哪!为此,我不得不擦掉一些非常古老的PHP知识:

复杂的混合字典/数组对象的格式是
base[key][key]…[key]=value

对于JSON
{“key1”:“value1”,“key2”:[“value2”,“value3”]}
,PHP希望
key1=value1&key2[0]=value3&key2[1]=value3
作为URL编码字符串(因此
key1=value1&key2%5B0%5D=value3&key2%5B1%5D=value3



对于一个更复杂的例子:
{“x”:{“y”:[“a”,“b”]},“z”:“c”}
,PHP希望
x[y][0]=a&x[y][1]=b&z=c

如果您的数据非常复杂,那么听起来您应该向服务器发送JSON或XML。您是在询问如何将如此复杂的数据编码到URI中,还是如何实现这种编码?如果是后者,则需要提供前者(或至少要编码的数据示例)。事实上,这样的例子无论哪种方式都是好的,你可以用URL编码的数据格式是相当有限的。对任意字典/数组嵌套进行编码没有“公式”。对于那些认为发送JSON(或XML)就是答案的人来说,我不喜欢这种方法,因为我有一个完整的API已经在以URL方式接收参数(application/x-www-form-urlencoded)我不想全部更改,也不想做一些变通来检查请求对象是json格式还是url post格式。尽管如果没有一种简单的方法将嵌套结构转换为数据,我将最后一次这样做。举个我需要的例子,让我花几个小时,我会把它贴出来。谢谢大家!!记住,URL的长度是有限制的。好吧!我想这就行了!:)现在我需要在Objective C中生成该字符串的方法,但我认为这不会花很多钱。谢谢你,杰弗里:)
NSArray *myArray = [NSArray arrayWithObjects: @"Value2", @"Value3", nil];
NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys: @"Value1", @"key1", myArray, @"Value2"];