使用json.net序列化匿名类型似乎已损坏 [英] Serializing anonymous types with json.net seems broken

查看:71
本文介绍了使用json.net序列化匿名类型似乎已损坏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

So far I have always used this piece of code to serialize anonymous types:

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);

它是在RavenDb 2.x中嵌入json.net的.

It was with json.net embedded inside RavenDb 2.x.

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

Recently I started a new project. It uses latest RavenDb 3.x.

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

Now when I serialize an anonymous type, I get other fields in the result string, for ex:

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

谢谢

推荐答案

在RavenDb 3.x中已更改. 因此,有两种解决方案:

It was changed in RavenDb 3.x. So there are 2 solutions:

  • 改为依靠Json.net库
  • 或自定义设置,如下所示:

  • Rely on Json.net library instead
  • Or customize the settings like so:

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

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

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

(note that DefaultMembersSearchFlags is marked as obsolete)

这篇关于使用json.net序列化匿名类型似乎已损坏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆