我在谷歌上搜索过这个问题,并尝试了一切方法来解决这个问题,但问题仍然存在。基本上,我有一个C#类,在那里我模拟了一张信用卡。我正在使用Nuget Packages中的Microsoft的JsonSerializer
来序列化此对象,但它返回一个空字符串。类别:
public class CreditCard
{
public string cardNumber;
public string cvv;
public string owner;
public string type;
public string bank;
public string expiry_date;
public CreditCard(string cardNumber, string cvv, string owner, string type, string bank, string expiry_date)
{
this.cardNumber = cardNumber;
this.cvv = cvv;
this.owner = owner;
this.type = type;
this.bank = bank;
this.expiry_date = expiry_date;
}
public CreditCard()
{
}
internal object getId()
{
return type + " " + cardNumber + " " + owner + " " + bank;
}
}
当我这样做的时候:
CreditCard creditCard = new CreditCard(cardNumber, cvv, owner, type, bank, expiry_date);
string json = JsonSerializer.Serialize(creditCard);
json
字符串为空。请注意,参数只是来自文本框值的字符串。我试着添加一个空构造函数,看看这是否是问题所在,但没有用。这个错误只有在我从NewtonsoftJson
切换到JsonSerializer
时才开始发生,所以我不知道这是否是问题所在。如有任何帮助,我们将不胜感激:(
请阅读以下内容:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to
是否明确说明:
默认情况下,所有公共属性都是序列化的。您可以指定要排除的属性。
当前,字段被排除在外。
因此,您需要将字段转换为属性。
您说问题是在切换到JsonSerializer之后开始的。
JsonSerializer可能使用Properties进行序列化,但您只有Fields。
注:正如@sychoboi111所指出的,它是:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to
因此;
要么将类数据实现为属性(无论如何,拥有公共字段都不是好的做法(,
或者参阅JsonSerializer的文档以使用字段进行序列化。
将字段更改为属性实际上非常简单:
public string cardNumber {get; set;}