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

如何反序列化由序列化JSON字符串组成的完整列表?

解决整个JSON字符串列表的反序列化问题

首先得帮你捋清楚原来的代码为什么行不通:你的result已经是一个字符串列表,每个元素本身就是序列化后的JSON对象(比如"{\"Id\":\"91e02276\",\"Message\":\"Hi There\"}")。当你执行JsonConvert.SerializeObject(result.ToArray())时,相当于把这个字符串列表又转成了一个JSON数组,里面的每个元素是带转义引号的字符串。这时候反序列化IEnumerable<DTO>,Newtonsoft.Json会试图把每个字符串直接映射到DTO类型,显然类型不匹配,所以会失败。

正确的做法是直接遍历列表中的每个JSON字符串,单独反序列化后再收集成DTO集合,用LINQ可以很简洁地实现:

// 直接遍历每个字符串反序列化,得到DTO列表
var y = result.Select(item => JsonConvert.DeserializeObject<DTO>(item)).ToList();

如果一定要用“一次性反序列化”的思路,也可以先把字符串列表转成JSON数组,再用JArray解析后逐个转成DTO,但这种方式多了一次序列化和解析的步骤,性能不如上面的方法:

var jsonArray = JArray.Parse(JsonConvert.SerializeObject(result));
var y = jsonArray.Select(token => token.ToObject<DTO>()).ToList();

总结一下,最直接高效的方式就是遍历每个字符串单独反序列化,毕竟你的原始数据就是一个个独立的JSON字符串,没必要额外把整个列表再序列化一遍~

内容的提问来源于stack exchange,提问作者Peter PitLock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:27:41