C#如何将返回JSON的ActionResult<string>转换为List<string>实现遍历
C# ActionResult 转 List 类型转换实现方案
你的伙伴提供的ReadSmb方法返回的是封装了字符串内容的ActionResult<string>,返回值本质是读取到的文件内容或者错误提示文本,要转换为List<string>可以按以下步骤实现:
实现步骤
- 第一步:从
ActionResult<string>中提取实际返回的字符串内容 - 第二步:根据返回内容的格式,选择JSON反序列化或者按换行符拆分,得到
List<string> - 第三步:遍历集合处理业务逻辑
代码实现(基于System.Text.Json,ASP.NET Core默认内置)
using System.Text.Json; using Microsoft.AspNetCore.Mvc; // 调用方法获取返回值 ActionResult<string> test = ReadSmb("服务器地址", "共享名", "文件路径", "用户名", "密码"); // 提取返回的原始字符串 string responseContent = test.Value ?? string.Empty; List<string> list = new List<string>(); try { // 情况1:返回内容是JSON数组格式,直接反序列化 list = JsonSerializer.Deserialize<List<string>>(responseContent) ?? new List<string>(); } catch (JsonException) { // 情况2:返回内容是多行纯文本/错误提示,按换行符拆分 list = responseContent.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList(); } // 遍历处理业务逻辑 foreach (var item in list) { // 你的业务处理代码 }
代码实现(基于Newtonsoft.Json)
如果你的项目使用Newtonsoft.Json作为序列化组件,把反序列化部分替换为以下代码即可:
using Newtonsoft.Json; list = JsonConvert.DeserializeObject<List<string>>(responseContent) ?? new List<string>();
注意事项
- 如果
ReadSmb返回的是连接失败、登录失败等错误提示,反序列化JSON会失败,走换行符拆分逻辑也可以拿到错误信息做异常处理 - 如果读取的文件本身是每行一条数据的纯文本,不需要走JSON反序列化,直接按换行符拆分即可得到目标集合
内容的提问来源于stack exchange,提问作者Bình Chu
相关产品推荐
相关产品推荐

