使用json.net实现复杂对象转换为QueryString
Posted wpycs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用json.net实现复杂对象转换为QueryString相关的知识,希望对你有一定的参考价值。
目标:生成复杂对象的QueryString,比如{a:[{b:1},{b:2}]}这种
[Test] public void 对象转QueryString() { var token = JToken.FromObject(new { Field1 = 1, Field2 = new { Field3 = "1", Field4 = new[] { new {Field5 = "2"}, new {Field5 = "3"} } }, Field6 = new[] { "3", "anc", "汉字" }, Fied7 = (string)null }); var queryStr = GetQueryString(token); Console.WriteLine(queryStr); } public static string GetQueryString(JToken obj) { var list = new List<string>(); SetQueryStringList(obj, list); return string.Join("&", list); } private static void SetQueryStringList(JToken jToken, List<string> queryStrList) { if (jToken.Type == JTokenType.Array || jToken.Type == JTokenType.Object || jToken.Type == JTokenType.Property) { foreach (var item in jToken) { SetQueryStringList(item, queryStrList); } } else { if (jToken.Type != JTokenType.Null && jToken.Type != JTokenType.None) { queryStrList.Add(jToken.Path + "=" + HttpUtility.UrlEncode(jToken.ToString())); } } }
结果:Field1=1&Field2.Field3=1&Field2.Field4[0].Field5=2&Field2.Field4[1].Field5=3&Field6[0]=3&Field6[1]=anc&Field6[2]=%e6%b1%89%e5%ad%97
以上是关于使用json.net实现复杂对象转换为QueryString的主要内容,如果未能解决你的问题,请参考以下文章
Json.net实现方便的Json转C#(dynamic动态类型)对象
Json.net实现方便的Json转C#(dynamic动态类型)对象
Json.net实现方便的Json转C#(dynamic动态类型)对象