Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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# JSONVERT don';在序列化中不包括未设置的数字成员_C#_Json.net - Fatal编程技术网

C# JSONVERT don';在序列化中不包括未设置的数字成员

C# JSONVERT don';在序列化中不包括未设置的数字成员,c#,json.net,C#,Json.net,我有一节课 public class Container { public long Id { get; set; } public string Name { get; set; } public List<string> Aliases { get; set; } public double Height { get; set; } public double Weight { get; set; } } 我希望将其序列化为JSON: {

我有一节课

public class Container
{
    public long Id { get; set; }
    public string Name { get; set; }
    public List<string> Aliases { get; set; }
    public double Height { get; set; }
    public double Weight { get; set; }
}
我希望将其序列化为JSON:

{
  "Weight": 127.3
}
但实际上它被序列化为:

{
  "Id": 0,
  "Height": 0.0,
  "Weight": 127.3
}
我正在尝试使用此命令对其进行序列化:

var settings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore,
    MissingMemberHandling = MissingMemberHandling.Ignore
};
var json = JsonConvert.SerializeObject(container, Formatting.Indented, settings);
据我所知,基本类型(如
int
long
我猜)不能为null。我认为这就是导致这种意外行为的原因


当我没有显式设置值时,如何解决这个问题以获得我想要的输出?例如,我认为将所有
long
转换为
null
可能并不理想。

这些值不可为null,因此它们永远不会为null。您看不到字符串属性打印的原因是字符串可为null,因此其默认值为null。 int、long等数字类型的默认值为0、0.0等。如果确实要忽略默认值,则需要使用
DefaultValueHandling
。我通常只会将那些属性设置为null(例如,
int?MyNullableInt
),因为我确实不关心null,但是有些项可能确实有一个我需要知道的值0


这些值不可为空,因此它们永远不会为空。您看不到字符串属性打印的原因是字符串可为null,因此其默认值为null。 int、long等数字类型的默认值为0、0.0等。如果确实要忽略默认值,则需要使用
DefaultValueHandling
。我通常只会将那些属性设置为null(例如,
int?MyNullableInt
),因为我确实不关心null,但是有些项可能确实有一个我需要知道的值0


“重量127.3
是一个打字错误吗?@SamuelG是的,我会编辑以更正它,谢谢你可能重复的是
“重量127.3
一个打字错误吗?@SamuelG是的,我会编辑以更正它,谢谢你可能重复的
int?
是完美的。实际上我并不知道这个方便的语言功能的存在。
int?
非常完美。我并不知道这种方便的语言功能的存在。
var settings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore,
    MissingMemberHandling = MissingMemberHandling.Ignore
};
var json = JsonConvert.SerializeObject(container, Formatting.Indented, settings);