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

时间:2012-11-25 05:40:14

标签: 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[] items { get; set; }
    public string x { get; set; }
}

除了按&分割并循环结果以手动设置每个值之外,还有更好(更复杂)的方法吗?

非常感谢任何指针/指导。

1 个答案:

答案 0 :(得分:0)

如果您可以控制应用程序的发送方,我强烈建议您使用不同的编码方法来简化解析。我只是JSON编码整个对象,然后如果它必须在query_string中,则对JSON进行URI编码。

对于包括query_string在内的URI的大小,通常存在相当小的(大约2K个字符)限制。如果您被迫使用HTTP,根据您的使用情况以及您是否可以控制此操作,POST可能更合适。

有关反序列化JSON的一些方法,请参阅此问题: C# deserialize dynamic JSON