使用json.net序列化匿名类型似乎已损坏 [英] Serializing anonymous types with json.net seems broken
问题描述
意识到问题似乎在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屋!