C# 属性未通过newtonsoft在Json中序列化
类中定义了许多属性,但其中一个属性未序列化(使用newtonsoft),该属性如下所述:C# 属性未通过newtonsoft在Json中序列化,c#,.net,asp.net-core,.net-core,visual-studio-2019,C#,.net,Asp.net Core,.net Core,Visual Studio 2019,类中定义了许多属性,但其中一个属性未序列化(使用newtonsoft),该属性如下所述: public override string Value { set { if (value == null) { this.Null = true; } else if (value == string.Empty) { _A = string.
public override string Value
{
set
{
if (value == null)
{
this.Null = true;
}
else if (value == string.Empty)
{
_A = string.Empty;
_P = string.Empty;
_S = string.Empty;
}
else
{
value = _A + _P + _S;
}
}
}
但是当我们在属性中定义getter时,它正在被序列化,所以请建议;我们不希望将getter放在属性中。将
[JsonProperty]
属性设置为您的属性。
但总的来说,您可以将getter设置为private,这样您就不会将数据暴露给其他类,但它可以帮助解决您的问题。首先,您不知道json现在如何序列化它,也许会使它成为一个只对属性设置的方法看起来很有趣。如果您想填充字段,只需告诉json使用注释即可
[JsonProperty("_A")]
private string _A ;
[JsonProperty("_P")]
private string _P ;
[JsonProperty("_S")]
private string _S;
[JsonIgnore]
public override string Value
{
set
{
if (value == null)
{
this.Null = true;
}
else if (value == string.Empty)
{
_A = string.Empty;
_P = string.Empty;
_S = string.Empty;
}
else
{
value = _A + _P + _S;
}
}
}
谢谢您的时间,但问题是我们不能更改代码;在我们找到具体原因之前,请让我知道为什么我们必须放置[jsonproperty]属性,因为newtonsoft已经满足了这一要求