使用json.net序列化匿名类型似乎已经破裂

时间:2015-11-17 21:07:43

标签: c# .net json.net ravendb anonymous-types

在意识到问题似乎是在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);

在jven.net中嵌入了RavenDb 2.x。

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

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

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

由于

1 个答案:

答案 0 :(得分:0)

在RavenDb 3.x中进行了更改。 所以有两个解决方案:

  • 依靠Json.net库
  • 或者自定义设置:

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

(请注意,DefaultMembersSearchFlags已标记为已废弃)