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