且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Json.NET序列化私有成员而不是只读属性

更新时间:2023-02-15 17:07:16

要获得部分答案,请与DefaultContractResolver.DefaultMembersSearchFlags混淆,以使其包含私人物品:

For a partial answer, messing with DefaultContractResolver.DefaultMembersSearchFlags can get it to include private things:

Newtonsoft.Json.JsonSerializerSettings jss = new Newtonsoft.Json.JsonSerializerSettings();

if (includePrivateMembers)
{
    Newtonsoft.Json.Serialization.DefaultContractResolver dcr = new Newtonsoft.Json.Serialization.DefaultContractResolver();
    dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic;
    jss.ContractResolver = dcr;
}

return Newtonsoft.Json.JsonConvert.SerializeObject(o, jss);

似乎可以处理许多对象,尽管有些对象似乎会生成CLR异常.

Seems to work on a lot of objects, though with some this seems to generate a CLR exception.