我遇到了以下问题,该问题与我遇到的问题大体相同:
但是,我的情况略有不同。如果我修改该Test问题的类以使其具有相同类型的array属性,则会收到相同的反序列化错误。
class Test
{
public Test[] Tests;
}
var settings = new JsonSerializerSettings
{
PreserveReferencesHandling = PreserveReferencesHandling.All
};
var o = new Test { Tests = new[] { new Test(), new Test() } };
//var o = new Test(); //this works if I leave the Tests array property null
var arr = new[] { o, o };
var ser = JsonConvert.SerializeObject(arr, settings);
arr = ((JArray)JsonConvert.DeserializeObject(ser, settings)).ToObject<Test[]>();
Run Code Online (Sandbox Code Playgroud)
我敢打赌,我缺少该属性的重要属性Tests。
当我尝试序列化具有类似结构的对象时,我的C#程序正在运行StackOverflowException:
下面的示例代码:
class Chacha
{
public Chacha NextChacha { get; set; }
}
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All,
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
static void Main(string[] args)
{
int count = 15000;
Chacha[] steps = new Chacha[count];
steps[0] = new Chacha();
for (int i = 1; i < count; i++)
{
steps[i] = new Chacha();
steps[i-1].NextChacha = steps[i];
}
string serSteps = JsonConvert.SerializeObject(steps, Settings);
}
Run Code Online (Sandbox Code Playgroud)
JSON.NET版本是:9.0.1
.NET Framework:4.5.2有什么 …