目标:生成复杂对象的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

最新文章

  1. sql查询重复数据
  2. Mybatis-update - 数据库死锁 - 获取数据库连接池等待
  3. JavaScript工具库之Lodash
  4. python install
  5. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  6. 咋一看DWoo 比 Smarty要好
  7. 使用DrawerLayout实现QQ5.0侧拉菜单效果
  8. grunt的基本概念和使用
  9. MySQL密码忘了怎么办?MySQL重置root密码方法
  10. SQL查询语句练习
  11. GitHub的初级使用
  12. Python数据分析matplotlib可视化之绘图
  13. centos7上安装zabbix4.0
  14. sparkStreaming消费kafka-1.0.1方式:direct方式(存储offset到zookeeper)-- 2
  15. jmeter 关联
  16. Android-普通变量与普通方法内存图
  17. facebook api之Ad
  18. idou老师教你学Istio :如何用istio实现监控和日志采集
  19. Android 两个界面间快速切换时,会发现有短暂黑屏
  20. with admin option /with grant option

热门文章

  1. Node.js躬行记(12)——BFF
  2. Java JDK的下载与安装!Java基础
  3. L1-027 出租 (20 分) java题解
  4. 试题 历届试题 核桃的数量 java题解
  5. Linux——Docker安装
  6. 使用 z3 进行逆向 解密字符串
  7. Java(46)类加载器
  8. Web前端安全之安全编码原则
  9. 浏览器有别_HTTP报文的回车换行
  10. Java内存分析--栈--堆