- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
当我使用 Google 可视化库创建可视化时,这是一个持续的恶化: 此图的左侧和右侧至少有 75 像素,顶部和底部还有 30-40 像素。馅饼本身没有理由不能更大,当我提供足够的空间时,右边的图例也没
我正在将我的应用程序转移到另一台服务器,但我遇到了一些似乎没有过期的 PHP session 问题。 在 php.ini 中我设置了: session.gc_probability = 1 sessi
关闭。这个问题需要更多 focused 。它目前不接受答案。 想要改进这个问题?更新问题,使其只关注 editing this post 的一个问题。 关闭 9 年前。 Improve this q
有时在项目结束时我会想“哇,我刚刚为那个项目写了很多行代码。”但我永远不知道到底有多少。 有什么方法可以实际列出自创建以来添加到 repo 中的所有代码行吗? 我认为那种东西看起来会很有趣。 编辑:我
我并不完全理解 Apple 的 iOS 4 模型,我已经研究了几个小时的文档,但我仍然感谢一些帮助。 后台 iPhone 应用程序会退出吗?例如,当我关闭 Loopt 等位置跟踪应用程序时,它将进入后
一些背景 我目前正在开发一个移动网站,因此我一直在 Firefox 中使用 User Agent switcher 切换用户代理。 (可爱的插件)。但是当我转到管理站点时,它呈现为 WML ,这让 F
我是一名优秀的程序员,十分优秀!