我有一个类,使用Json.net
尝试对给定的对象进行序列化和反序列化。
public class JsonSerializer
{
public string Serialize(object toSerialaze)
{
return JsonConvert.SerializeObject(toSerialaze);
}
public T Deserialize<T>(string toDeserialaze)
{
return JsonConvert.DeserializeObject<T>(toDeserialaze);
}
}
给它一个属于这个类的对象
public class Isbn
{
private readonly int _groupCode;
private readonly int _publisherCode;
private readonly int _titleCode;
private readonly int _checkCode;
private static readonly Regex Regex = new Regex(@"^\s*\d*\s*-\s*\d*\s*-\s*\d*\s*-\s*\d*\s*$");
public Isbn(int groupCode, int publisherCode, int titleCode, int checkCode)
{
_groupCode = groupCode;
_publisherCode = publisherCode;
_titleCode = titleCode;
_checkCode = checkCode;
}
public Isbn(string isbn)
{
if (isbn == null)
throw new ArgumentNullException("isbn");
if (isbn == "") return;
if (!IsValid(isbn)) return;
var isbnStrings = isbn.Split(new[] {'-', ' '}, StringSplitOptions.RemoveEmptyEntries);
_groupCode = Convert.ToInt32(isbnStrings[0]);
_publisherCode = Convert.ToInt32(isbnStrings[1]);
_titleCode = Convert.ToInt32(isbnStrings[2]);
_checkCode = Convert.ToInt32(isbnStrings[3]);
}
}
我遇到了以下异常:
```Additional information: 无法找到类型 Library.Isbn 的构造函数。一个类应该有默认构造函数、一个带参数的构造函数或者一个标记有 JsonConstructor 特性的构造函数。```
我知道,我可以在反序列化时在需要使用的构造函数前面加上 ```[JsonConstructor]``` 标记,但是我不想让类 ```Isbn``` 知道 Json 的存在。有没有其他方法可以达到相同的效果呢?我应该如何让 JsonConverter 知道要使用其中的两个构造函数中的哪一个呢?