camelCase JRaw serialization in Json.NET
说我有一个
1 2 3 4 5 6 7 |
现在,当我对此序列化时,我可以强制将
1 2 3 4 5 |
但是,有什么方法可以使
例如我想得到
1 | //"{"c":{"a":42}}" |
这是一种方法,尽管它可能不是最有效的,因为它需要您序列化对象,反序列化然后再次序列化它。我相信问题是序列化程序无法正确检测到您的" A" JSON属性,因为它是原始JSON字符串,而不是对象属性。这会将您的JRaw JSON字符串转换为动态对象(
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | using System; using System.Text.RegularExpressions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; using System.Dynamic; public class Program { public class C { public JRaw Prop { get; set; } } public static void Main() { var a = new JRaw("{"A":42}"); var c = new C { Prop = a }; var camelCaseSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; var result = JsonConvert.SerializeObject(c, camelCaseSettings); var interimObject = JsonConvert.DeserializeObject<ExpandoObject>(result); result = JsonConvert.SerializeObject(interimObject, camelCaseSettings); Console.WriteLine(result); Console.ReadKey(); } } |
输出: