You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Json.Net逐行读取JSON文件数据并添加至List

解决JSON数组转回List的问题

嘿,我来帮你搞定这个!你已经用Json.Net的JsonConvert.SerializeObject(list, Formatting.Indented)生成了格式化的JSON数组,要把这些数据转回List<string>其实有两种方式,我优先推荐最省心的官方方法:

方法一:直接用Json.Net反序列化(推荐)

这是最简单也最可靠的方式,Json.Net会自动帮你处理所有解析逻辑,不用手动逐行读取:

// 先把你的JSON内容存成字符串变量
string jsonContent = @"[ 
    ""Apple"", 
    ""Pear"", 
    ""Cherry"", 
    ""Banana"", 
    ""Orange"", 
    ""Grape"", 
    ""Strawberry"" 
]";

// 直接反序列化为List<string>
List<string> fruitList = JsonConvert.DeserializeObject<List<string>>(jsonContent);

执行完这段代码,fruitList就会包含JSON里的所有水果字符串了,完全不用你自己处理换行、引号或者逗号这些细节,而且面对复杂JSON格式(比如元素里有特殊字符)也能稳定工作。

方法二:手动逐行读取(仅用于学习或特殊场景)

如果你是想学习手动解析的逻辑,也可以按行拆分JSON内容,过滤掉无关内容后提取元素:

string jsonContent = @"[ 
    ""Apple"", 
    ""Pear"", 
    ""Cherry"", 
    ""Banana"", 
    ""Orange"", 
    ""Grape"", 
    ""Strawberry"" 
]";

List<string> fruitList = new List<string>();
// 按换行符拆分所有行,同时去掉空行
string[] lines = jsonContent.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

foreach (string line in lines)
{
    // 去掉每行前后的空格
    string cleanedLine = line.Trim();
    // 跳过数组的开头[和结尾]行
    if (cleanedLine == "[" || cleanedLine == "]")
        continue;
    // 去掉字符串的引号和末尾可能存在的逗号
    string fruit = cleanedLine.Trim('"', ',', ' ');
    // 确保提取到的内容不为空再添加到列表
    if (!string.IsNullOrWhiteSpace(fruit))
        fruitList.Add(fruit);
}

不过要注意,这种手动方法只适用于你现在这种简单的JSON数组,如果JSON格式有变化(比如元素包含换行、转义字符),手动解析很容易出错,所以日常开发里还是优先用反序列化方法哦。

内容的提问来源于stack exchange,提问作者Johnny Wind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:59:09