【发布时间】:2026-01-25 18:45:02
【问题描述】:
我尝试了许多不同的代码来反序列化 Json_List 中的对象,但每次应该保存我的对象的列表即使在反序列化之后也会获得空值。顺便说一句,我正在使用 Newtonsoft.Json 命名空间。当我序列化对象时它工作得很好,但反序列化时它完全失败了。
public void Load(string fileName)
{
//I found a way that works but its trivial and I think it can be done with a better code without using
// an array and a loop
Curve[] arrCurves = new Curve[1024];
JsonSerializer ser = new JsonSerializer { TypeNameHandling = TypeNameHandling.Auto };
using (TextReader reader = File.OpenText(fileName))
{
_curves.Clear();
//_curves.Add(ser.Deserialize(reader, typeof(Curve)) as Curve);
//_curves.Add(ser.Deserialize(reader, typeof(List<Curve>)) as Curve);
arrCurves = ser.Deserialize(reader, typeof(Curve[])) as Curve[];
for (int i = 0; i < arrCurves.Length; i++)
{
_curves.Add(arrCurves[i]);
}
}
}
顺便说一句,代码可以工作,但我想知道我是否可以在没有循环的情况下做到这一点,而且“_curves”列表是只读列表
【问题讨论】:
-
您是否只是在寻找
ser.Populate(reader, _curves),如Modify existing object with new partial JSON data using Json.NET 所示?请注意,您需要像当前一样在填充之前清除曲线。 -
ser.Populate(reader, _curves);有效,请参阅dotnetfiddle.net/c2xBk4。作为副本关闭。 -
idk 如果可以的话,我会试一试,谢谢 :)
-
效果很好,谢谢
标签: c# json.net json-deserialization jsonconvert