用json.net序列化匿名类型似乎已经失败

本文关键字:失败 类型 json net 序列化 | 更新日期: 2023-09-27 18:22:14

意识到问题似乎在RavenDb库而不是json.net库中后的最新编辑

到目前为止,我一直使用这段代码来序列化匿名类型:

using Raven.Imports.Newtonsoft.Json;
var anon = new { errors = new string[] { "Login error" } };
var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
var str = JsonConvert.SerializeObject(anon, Formatting.None, settings);

这是在RavenDb2.x.中嵌入了json.net

最近我开始了一个新项目。它使用最新的RavenDb3.x.

现在,当我序列化一个匿名类型时,我会在结果字符串中获得其他字段,例如:

{"<errors>i__Field":["Login error"],"errors":["Login error"]}

感谢

用json.net序列化匿名类型似乎已经失败

在RavenDb3.x中进行了更改。因此有两种解决方案:

  • 请改用Json.net库
  • 或者自定义这样的设置:

    ContractResolver=new CamelCasePropertyNamesContractResolver(){DefaultMembersSearchFlags=System.Reflection.BindingFlags.Public|System.Reflecton.BindingFlags.Instance}

(请注意,DefaultMembersSearchFlags被标记为已过时)