我有一个这样的类:
public class Pussy {
public readonly int Meows;
[JsonConstructor]
private Pussy() { }
public Pussy(int meows)
{
this.Meows = meows;
}
}
当我试图用Json序列化它。. NET,它工作良好:
{"Meows":3}
但是当反序列化时,它只是创建一个将Meows
设置为0
的类。
怎么了?如何解决这个问题?
尝试将JsonProperty
属性用于只读字段
[JsonProperty]
public readonly int Meows;
或JsonConstructor
属性为非默认属性。
[JsonConstructor]
public Pussy(int meows)
反序列化器通常接受请求的类型,并使用反射检查可公开设置的字段和属性。
您的字段不是公共可设置的,因此在反序列化期间不会写入。
要修复它,请删除readonly
修饰符。
或者您可以创建一个自定义解析器和/或序列化器,使用反射写入只读字段。