为了提高性能,我尝试将自定义序列化程序与Newtonsoft JSON一起使用,但由于某些原因,函数会随机停止,并且调用序列化程序的函数也会结束。
没有例外,因此我无法确定原因。
这是函数:使用Newtonsoft JSON自定义序列化的问题
public string customSerialize(List<EntityJSON> data)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
JsonTextWriter writer = new JsonTextWriter(sw);
writer.WriteStartObject();
writer.WriteStartArray(); // <-- Line 89
foreach (EntityJSON json in data)
{
writer.WritePropertyName("type");
writer.WriteValue(json.type);
writer.WritePropertyName("name");
writer.WriteValue(json.name);
writer.WritePropertyName("position");
writer.WriteStartArray();
writer.WritePropertyName("x");
writer.WriteValue(json.position.x);
writer.WritePropertyName("z");
writer.WriteValue(json.position.z);
writer.WritePropertyName("rot");
writer.WriteValue(json.position.rot);
writer.WriteEndArray();
writer.WritePropertyName("flags");
writer.WriteValue(json.flags);
}
writer.WriteEndArray();
writer.WriteEndObject();
return sb.ToString();
}
更新:得到了例外感谢@Ayoub_B,这是个例外:Exception: Newtonsoft.Json.JsonWriterException: Token StartArray in state ObjectStart would result in an invalid JSON object. Path ''. ...
可悲的是,我不知道这意味着什么,我也标志着例外就像上面的代码(第89行)一样。
的种类,该功能是由被称为另一个函数调用每250ms由一个定时器(非线程定时器)。我会尝试你的想法。 –
好吧得到了例外,并更新了我原来的帖子,仍然不确定它的含义。 –
我更新了我的答案。 –