zoukankan      html  css  js  c++  java
  • 使用json.net实现复杂对象转换为QueryString

    目标:生成复杂对象的QueryString,比如

    new
    			{
    				Field1 = 1,
    				Field2 = new
    				{
    					Field3 = "2",
    					Field4 = new[]
    					{
    						new {Field5 = "4"},
    						new {Field5 = "5"}
    					}
    				},
    				Field6 = new[] { "3", "anc", "汉" },
    				Fied7 = (string)null
    			}
    

      

    		[Test]
    		public void 对象转QueryString()
    		{
    			var token = JToken.FromObject(new
    			{
    				Field1 = 1,
    				Field2 = new
    				{
    					Field3 = "2",
    					Field4 = new[]
    					{
    						new {Field5 = "4"},
    						new {Field5 = "5"}
    					}
    				},
    				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 + "=" + Uri.EscapeUriString(jToken.ToString()));
    				}
    			}
    		}

     结果:Field1=1&Field2.Field3=2&Field2.Field4[0].Field5=4&Field2.Field4[1].Field5=5&Field6[0]=3&Field6[1]=anc&Field6[2]=%E6%B1%89

  • 相关阅读:
    C
    A
    L
    G
    关于html()、val()、text()
    EL表达式
    JSON书写格式示例
    Servlet获取项目名的方法
    修改完Servlet后不用重启项目的设置方法
    浮动
  • 原文地址:https://www.cnblogs.com/wpycs/p/13371089.html
Copyright © 2011-2022 走看看