我使用Json.NET
序列化数据字段的验证数据。在.NET端,验证数据是ValidationAttribute
个对象的列表。但是,我想以这样的特殊形式将它们序列化:
[
{ Type: 'Required', ErrorMessage: '{FieldName} is required' },
{ Type: 'RegularExpression', Pattern: '^\d+$', ErrorMessage: '...'
]
在一个理想的解决方案中,我可以在序列化之前简单地拦截对象,我可以创建一个相应的Dictionary<string, object>
对象来序列化而不是原始对象。
这种情况有没有解决方案?
答案 0 :(得分:2)
您可以实现自己的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; }
}
或者,将序列化程序的实例传递给Serialize方法:
string json = JsonConvert.SerializeObject(sourceObj, Formatting.Indented, new YourSerializer(typeof(yourClassName)));
以下是一些链接:
希望,这会有所帮助。