我正在使用Json.NET
来序列化数据字段的验证数据。在 .NET 端,验证数据是ValidationAttribute
对象的列表。但是,我想以这样的特殊形式序列化它们:
[
{ Type: 'Required', ErrorMessage: '{FieldName} is required' },
{ Type: 'RegularExpression', Pattern: '^d+$', ErrorMessage: '...'
]
在理想的解决方案中,我可以简单地在序列化之前截获对象,并且可以创建一个相应的Dictionary<string, object>
对象进行序列化,而不是原始对象。
对于这种情况,是否有任何解决方案?
您可以实现自己的JsonConverter
类并根据需要转换集合。
你只需要创建你的类并从JsonConverter
继承它
public class YourSerializer : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return typeof(YourClassName).IsAssignableFrom(objectType);
}
}
然后你需要装饰你的类,该类将使用属性进行序列化(看起来这不是你想要的)
[JsonConverter(typeof(YourSerializer))]
public class YourClassName
{
public string Name { get; set; }
public string Value { get; set; }
}
或者,将序列化程序的实例传递给序列化方法:
string json = JsonConvert.SerializeObject(sourceObj, Formatting.Indented, new YourSerializer(typeof(yourClassName)));
以下是一些链接:
- http://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm
- http://blog.maskalik.com/asp-net/json-net-implement-custom-serialization/
希望,它会有所帮助。