Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Newtonsoft.json将值333转换为类型时出错_C#_Json.net - Fatal编程技术网

C# Newtonsoft.json将值333转换为类型时出错

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(

Newtonsoft.json似乎无法将int转换为我的nInt结构。我不知道为什么。我的结构的目的是允许int设置为null,但实际上不是null,而是默认为0

这是我的密码:

第九条:

//
///不可为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()方法。