序列化的常规方法是将属性应用于您的类以描述序列化(或反序列化)是如何进行的。例如:
[DataContract]
class MyClass
{
[DataMember]
public string Name { get; set; }
}
有没有一种方法可以使用 JSON.NET 执行序列化,而无需将属性应用于您的类,而是提供一个“sidecar”对象,以某种方式描述类的哪些方面将被序列化。
我问的原因与关注点分离有关。如果您的 API 不了解请求如何到达它,那么其自然扩展就是您的 API 数据结构不应使用序列化属性进行修饰。
当然,我可以获取我的一个 API 结果对象的“内容”,并将其复制到另一个对象中,该对象具有一个确实具有适当序列化属性的类,但在某些情况下,这似乎更可取的是说“嘿,我想序列化这个对象,而这个对象没有序列化属性,所以这里有一个单独的数据结构来描述要做什么。”
当然,这会很方便的另一个地方是第三方库,您没有机会修改对象(同样,您可以复制值,但我正在寻找其他方法) .
最佳答案
您可以使用 JsonSerializerSettings 指定各种序列化选项。您可以指定 whether to serialize or not a particular property ,如何序列化特定类型或转换其值等。
var settings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
.....
};
settings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
settings.Binder = new SomeSerializationBinder(new DefaultSerializationBinder());
var result = JsonConvert.SerializeObject(yourObject, settings);
关于c# - JSON.NET 可以使用 "sidecar"方法序列化对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469434/