JSON序列化函数返回空字符串



我在谷歌上搜索过这个问题,并尝试了一切方法来解决这个问题,但问题仍然存在。基本上,我有一个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;}

最新更新