Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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
C#从QueryString反序列化复杂对象_C#_Asp.net_Arrays_Query String_Deserialization - Fatal编程技术网

C#从QueryString反序列化复杂对象

C#从QueryString反序列化复杂对象,c#,asp.net,arrays,query-string,deserialization,C#,Asp.net,Arrays,Query String,Deserialization,我被迫使用GET请求将复杂对象传递给我的应用程序 如何反序列化查询字符串,如下所示: ?people[andy]=12&people[bob]=43&people[charlie]=53&items=89&items=123&x=zulu 像这样的自定义对象 public class myClass { public Dictionary<string, int> people { get; set; } public int

我被迫使用
GET
请求将复杂对象传递给我的应用程序

如何反序列化查询字符串,如下所示:

?people[andy]=12&people[bob]=43&people[charlie]=53&items=89&items=123&x=zulu
像这样的自定义对象

public class myClass {
    public Dictionary<string, int> people { get; set; }
    public int[] items { get; set; }
    public string x { get; set; }
}
公共类myClass{
公共字典人物{get;set;}
公共int[]项{get;set;}
公共字符串x{get;set;}
}
除了通过
&
将其拆分并通过结果循环手动设置每个值之外,还有更好(更复杂)的方法吗


如果您能控制应用程序的发送端,我强烈建议您使用不同的编码方法,以使解析更容易。我只需要对整个对象进行JSON编码,然后对JSON进行URIencode(如果必须在查询字符串中)

URI的大小(包括查询字符串)通常有相当小的限制(大约2K个字符)。如果您被迫使用HTTP,这取决于您的用例以及您是否对此有控制权,POST可能更可取

有关反序列化JSON的一些方法,请参见此问题:

你在寻找比拆分字符串和设置“myClass”对象属性更复杂的东西吗?啊,我没有想到做类似于
?json=%7B%22myName%22%3A%22Greg%22%7D的事情,不用肉眼转换URIencoding,这看起来很正确:-)