如何通过迭代器遍历字符串数组动态构建JSON对象参数列表?
问题:动态生成TemplateParameter列表
我正在创建一个要发送至服务器的JSON对象,当前代码实现如下:
components = new List<TemplateComponent> { new TemplateComponent { type = "body", parameters = new List<TemplateParameter> { new TemplateParameter { type = "text", text = args[0] }, new TemplateParameter { type = "text", text = args[1] }, new TemplateParameter { type = "text", text = args[2] }, new TemplateParameter { type = "text", text = args[3] }, new TemplateParameter { type = "text", text = args[4] } } } };
现在的问题是,变量args是一个string类型数组,长度动态可变,请问如何修改代码,通过迭代器逐个遍历args来创建每个TemplateParameter,而非像现在这样写死5次重复代码?
解决方案
方式1:使用LINQ快速转换
利用LINQ的Select方法可以简洁完成数组到TemplateParameter列表的转换:
components = new List<TemplateComponent> { new TemplateComponent { type = "body", parameters = args.Select(arg => new TemplateParameter { type = "text", text = arg }).ToList() } };
这段代码会遍历args中的每一个元素,将其转换为对应的TemplateParameter对象,最后通过ToList()方法转换为List<TemplateParameter>类型,直接赋值给parameters属性。
方式2:使用foreach循环手动构建
如果更习惯传统循环写法,可以用foreach迭代args并逐个添加元素:
var parameterList = new List<TemplateParameter>(); foreach (var arg in args) { parameterList.Add(new TemplateParameter { type = "text", text = arg }); } components = new List<TemplateComponent> { new TemplateComponent { type = "body", parameters = parameterList } };
先初始化一个空的List<TemplateParameter>,遍历args数组时创建对应的TemplateParameter并添加到列表中,最后将列表赋值给parameters属性。
内容的提问来源于stack exchange,提问作者Koby Douek
相关产品推荐
相关产品推荐

