C# Newtonsoft.json将值333转换为类型时出错
Newtonsoft.json似乎无法将int转换为我的nInt结构。我不知道为什么。我的结构的目的是允许int设置为null,但实际上不是null,而是默认为0 这是我的密码: 第九条:C# Newtonsoft.json将值333转换为类型时出错,c#,json.net,C#,Json.net,Newtonsoft.json似乎无法将int转换为我的nInt结构。我不知道为什么。我的结构的目的是允许int设置为null,但实际上不是null,而是默认为0 这是我的密码: 第九条: // ///不可为null的int。默认值为0。 /// 公共结构 { 公共任天堂(整数?值) :此() { 值=值??0; } 私有空间去噪() { 值=值??0; } 公共整数 { 得到; 私人设置; } 公共静态隐式运算符nin(int值) { 返回新的nInt(值); } 公共静态隐式运算符nin(
//
///不可为null的int。默认值为0。
///
公共结构
{
公共任天堂(整数?值)
:此()
{
值=值??0;
}
私有空间去噪()
{
值=值??0;
}
公共整数
{
得到;
私人设置;
}
公共静态隐式运算符nin(int值)
{
返回新的nInt(值);
}
公共静态隐式运算符nin(int?值)
{
返回新的nInt(值);
}
公共静态隐式运算符int?(nInt值)
{
返回值。值为0;
}
公共静态隐式运算符int(nInt值)
{
返回值。值为0;
}
公共覆盖布尔等于(对象其他)
{
去皮();
返回值。等于(其他);
}
公共覆盖int GetHashCode()
{
去皮();
返回值。GetHashCode();
}
公共类型GetType()
{
返回类型(int?);
}
public int GetValuerDefault(int defaultValue)
{
去皮();
返回值.getValuerDefault(默认值);
}
公共布尔值
{
获取{deNullify();返回值.HasValue;}
}
公共重写字符串ToString()
{
去皮();
返回值.ToString();
}
}
第九次使用:
public class TotalCountObject
{
public nInt totalCount { get; set; }
}
TotalCountObject tco = JsonConvert.DeserializeObject<TotalCountObject>(jsonString, jsonSerializerSettings);
// here is where i get Error converting value 333 to type 'nInt'.
公共类TotalCountObject
{
公共九总计数{get;set;}
}
TotalCountObject tco=JsonConvert.DeserializeObject(jsonString、jsonSerializerSettings);
//这里是将值333转换为类型“nInt”时出错的地方。
您无需创建自己的类型即可完成此操作。您可以使用JSON.NET中的NullValueHandling
选项忽略不可为null的类型的null
s。例如:
public class TotalCountObject
{
[JsonProperty(NullValueHandling = NullValueHanding.Ignore)]
public int totalCount { get; set; }
}
由于int
的默认值为0
,因此忽略此属性时,其值将为零
您还可以在JsonSerializerSettings
中设置此属性:
var settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
TotalCountObject tco = JsonConvert.DeserializeObject<TotalCountObject>(
jsonString, jsonSerializerSettings);
var settings=newjsonserializersettings();
settings.NullValueHandling=NullValueHandling.Ignore;
TotalCountObject tco=JsonConvert.DeserializeObject(
jsonString、jsonSerializerSettings);
尽管如果您不想将
NullValueHandling
应用于所有属性,那么这可能不是您想要采用的方法 您无需创建自己的类型即可完成此操作。您可以使用JSON.NET中的NullValueHandling
选项忽略不可为null的类型的null
s。例如:
public class TotalCountObject
{
[JsonProperty(NullValueHandling = NullValueHanding.Ignore)]
public int totalCount { get; set; }
}
由于int
的默认值为0
,因此忽略此属性时,其值将为零
您还可以在JsonSerializerSettings
中设置此属性:
var settings = new JsonSerializerSettings();
settings.NullValueHandling = NullValueHandling.Ignore;
TotalCountObject tco = JsonConvert.DeserializeObject<TotalCountObject>(
jsonString, jsonSerializerSettings);
var settings=newjsonserializersettings();
settings.NullValueHandling=NullValueHandling.Ignore;
TotalCountObject tco=JsonConvert.DeserializeObject(
jsonString、jsonSerializerSettings);
尽管如果您不想将NullValueHandling
应用于所有属性,那么这可能不是您想要采用的方法 我将bite-Nullable已经定义了一个执行此操作的GetValueOrDefault()方法。我将bite-Nullable已经定义了一个执行此操作的GetValueOrDefault()方法。