如何使用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
相关产品推荐
相关产品推荐

