gpt4 book ai didi

.net - 反序列化空值JSON.net时抛出空值异常

转载 作者:行者123 更新时间:2023-12-04 05:51:46 25 4
gpt4 key购买 nike

嗨, friend 们,我正在尝试将一个隐藏的控制字段反序列化为一个 JSON 对象,代码如下:

Dim settings As New Newtonsoft.Json.JsonSerializerSettings() 
settings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore
Return Newtonsoft.Json.JsonConvert.DeserializeObject(Of testContract)(txtHidden.Text, settings)

但我收到以下异常。 value cannot be null parameter name s: 我什至添加了以下几行,但仍然无法正常工作。请帮忙。

settings.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore
settings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
settings.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace

最佳答案

当我尝试调用相同的方法时,我收到了完全相同的错误消息。确保您的目标类(您的 testContract 类)有一个默认构造函数(没有参数的构造函数)。

在 C# 中,您的类和默认构造函数看起来像这样:

class testContract
{
string StringProperty;
int IntegerProperty;

public testContract()
{
// This is your default constructor. Make sure this exists.
// Do nothing here, or set default values for your properties
IntegerProperty = -1;
}

public testContract(string StringProperty, int IntegerProperty)
{
// You can have another constructor that accepts parameters too.
this.StringProperty = StringProperty;
this.IntegerProperty = IntegerProperty;
}
}

当 JSON.net 想要将 JSON 字符串反序列化为对象时,它首先使用其默认构造函数初始化对象,然后开始填充其属性。如果找不到默认构造函数,它将使用它能找到的任何其他构造函数初始化对象,但会将 null 传递给所有参数。

In a nutshell, You should either have a default constructor for your target class, or, your non-default constructor must be able to handle all null parameters.

关于.net - 反序列化空值JSON.net时抛出空值异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2988724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com