2

我被迫使用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; }
}

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

任何指针/指导将不胜感激。

4

1 回答 1

0

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

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

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

于 2012-11-25T05:50:59.270 回答