gpt4 book ai didi

c# - 如何判断 .NET 中的反序列化 JSON 对象中是否曾经定义过某个键?

转载 作者:行者123 更新时间:2023-12-03 02:31:32 27 4
gpt4 key购买 nike

我正在使用 C#/.NET 4.5 将 JSON 对象反序列化为 native .NET 类型。 JSON 如下所示:

{
id: 841,
runningTime: 33.8643736,
title: "Test title"
}

...它反序列化的类看起来像:

public class Slide
{
public double runningTime
{
get;
set;
}

public string title
{
get;
set;
}

public int id
{
get;
set;
}
}

...使用此代码对其进行反序列化:

// given serializer is an instance of JavaScriptSerializer
var slide = serializer.Deserialize<Slide>(json);

这工作得很好,我可以读取对象的属性,就像直接读取 JSON 一样。

但是,如果 title 是 JSON 中的可选键怎么办?我可以在反序列化后检查它是否为 null,但这并不完美,因为 title 可以在 JSON 本身中合法地设置为 null,并且我需要知道 key 本身是否已定义。在 title 中使用一些占位符值(例如 "UNDEFINED")也很麻烦。

那么,如果我使用 JavaScriptDeserializer 反序列化 JSON,我如何判断某个键是否首先在 JSON 中定义,还是显式设置为 null?

最佳答案

我认为检查 null 是不够的,因为 JSON 可能包含 null。所以你可以这样做:

public class Slide
{
public bool HasTitle { get; private set; }

public double runningTime
{
get;
set;
}

private string _title;

public string title
{
get { return _title; }
set { _title = value; HasTitle = true; }
}

public int id
{
get;
set;
}
}

现在检查“HasTitle”以查看标题属性是否已设置。

关于c# - 如何判断 .NET 中的反序列化 JSON 对象中是否曾经定义过某个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301091/

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