问题
Latest edits after realizing that the issue seems to be in RavenDb library instead of json.net library
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);
It was with json.net embedded inside RavenDb 2.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"]}
Thanks
回答1:
It was changed in RavenDb 3.x. So there are 2 solutions:
- Rely on Json.net library instead
Or customize the settings like so:
ContractResolver = new CamelCasePropertyNamesContractResolver() { DefaultMembersSearchFlags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance }
(note that DefaultMembersSearchFlags is marked as obsolete)
来源:https://stackoverflow.com/questions/33767011/serializing-anonymous-types-with-json-net-seems-broken