复杂对像的序列化一定要使用NewtonJson,别选JavaScriptSerializer ,否则就准备浪费一天时间后倒回来再用NewtonJson吧。
当对像存在循环引用的时候,用NewtonJson会报“newtonsoft.json Self referencing loop detected for property ”的错误,这需要用到ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize
str = JsonConvert.SerializeObject(obj ,
new JsonSerializerSettings()
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize
});
网上有很多用 Newtonsoft.Json.ReferenceLoopHandling.Ignore 的,这样是不报错了,但是引用项也没有了,不能还原回序列化前的状态。