JSON 是否应该包含空值 [关闭]

2023-12-21

我正在创建一个以 JSON 形式返回结果的 API。当值为空时是否应该在结果中包含键是否有当前的最佳实践?例如:

{
    "title":"Foo Bar",
    "author":"Joe Blow",
    "isbn":null
}

or

{
    "title":"Foo Bar",
    "author":"Joe Blow"
}

由于第二个较小,我倾向于这种风格,但我不确定是否有首选风格。从客户的角度来看,这两种风格在功能上似乎是等效的。各有什么优点或缺点?


我喜欢总是明确地包含 null,因为它具有意义。 省略属性会产生歧义。

只要您与服务器的协议达成一致,上述任何内容都可以工作,但如果您从服务器传递空值,我相信这会使您的 API 以后更加灵活。

还应该提到 javascript 的 hasOwnProperty 函数可以让您进一步了解。

/* if true object DOES contain the property with *some* value */
if( objectFromJSON.hasOwnProperty( "propertyName" ) )

/* if true object DOES contain the property and it has been set to null */
if( jsonObject.propertyName === null )

/* if true object either DOES NOT contain the property
   OR
   object DOES contain the property and it has been set to undefined */
if( jsonObject.propertyName === undefined )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON 是否应该包含空值 [关闭] 的相关文章

随机推荐

  • 基于argparse的调用函数

    我是 python 新手 目前正在使用它 我有一个脚本可以对设备进行一些 API 调用 我想扩展功能并根据调用脚本时给出的参数调用不同的函数 目前我有以下内容 parser argparse ArgumentParser parser ad
  • 如何在 Windows 2012R2 上为 IIS 网站制作 SHA2 CSR 文件?

    我需要网站的 SSL 证书 但 CA 不接受我的 CSR 并告诉我 这是 SHA1 算法 您应该发送基于 SHA2 的 CSR 文件 如何在 Windows 2012R2 上为 IIS 网站创建 SHA2 CSR 文件 None
  • MVC Razor 部分视图中 webGrid.GetHtml 的分页

    我的页面上有两个选项卡 对于第一个选项卡 我在页面加载时加载网格 第二次 点击时 我正在使用Ajax ActionLink使用部分视图加载网格 我在用webGrid GetHtml 在两个选项卡中呈现具有默认分页的网格 第一个选项卡的分页工
  • 使用 OmniAuth 在 Factory Girl 中创建用户?

    我当前正在创建一个使用 OmniAuth 来创建和验证用户的应用程序 我在测试过程中遇到问题 因为 Factory Girl 无法在没有 OmniAuth 的情况下生成用户 我有几种不同的方法让工厂女孩使用omniauth 创建用户 但都没
  • 如何动画matplotlib的drawgreatcircle函数?

    我创建了一个小程序 以 NHL 城市为对象 然后绘制球队在整个赛季中走过的路径 生成的图形很混乱 所以我想到 如果我对飞行路径进行动画处理 会很有趣 就像观看印第安纳琼斯电影一样 线条从一个点延伸到另一个点 通过查看其他 matplotli
  • firebug - 隐藏特定 .css 文件中的样式

    有什么方法可以隐藏 firebug 样式面板中特定样式表的样式吗 例如我使用 CSS 重置并包含reset css在我的页面中 但当它在样式窗口中显示无用信息时 它看起来不太好 谢谢 我知道您在询问如何使用 FireBug 禁用样式表 你两
  • 如何减少这么长的 if 语句列表?

    所以这里我有一长串 if 语句 应该检测int anArray 是在一定范围内的 anArray new int 15 的价值观int anArray 从 开始anArray 0 是 49 50 51 59 0 5 9 10 15 19 5
  • VS Code 光标跳到底部

    为什么我创建新标签时光标会跳到最后一行代码 例如 当我在 HTML 中输入注释时 只要输入 它就会跳到底部 我必须更改什么设置才能防止这种情况发生 这很烦人 我刚刚开始使用 VS Code 如果这是一个非常简单的修复 那么我很抱歉 我有类似
  • Angular 中 .next() 函数的解释

    import Component Input Output EventEmitter from angular core var colorPickerCss app css ui color picker css var colorPic
  • linux bash 中的 $RANDOM 在启动时将始终相同

    我遇到了这个问题 我很困惑 我在 bash 中使用 RANDOM 作为 Linux 启动过程一开始的测试字符串 非常有趣的是 我观察到每次 linux 启动时 RANDOM 都是相同的 就我而言 它是 18869 我只是将 RANDOM 回
  • 查找字符串是否仅包含重复字符的正则表达式是什么?

    我已经经历过 正则表达式使用 Java 模式匹配字符串中的四个重复字母 https stackoverflow com questions 2622776 regex to match 4 repeated letters in strin
  • 设置 ChromeCast MediaRoute 按钮的样式

    我似乎无法让 MediaRoute 按钮在我的实体 ActionBar 中显示为 白色 我的问题是 如何在不更改可绘制名称的情况下将 MediaRoute 按钮设置为浅色或深色 在这里查看类似的问题 如何更改 ActionBar 中 Med
  • 尝试在 Heroku 上通过 bootstrap-sass 导入 bootstrap 但出现错误

    我有一个 Rails 应用程序 并尝试按照此处的说明使用 Bootstrap sass 在 Heroku 上导入 Bootstrap https github com thomas mcdonald bootstrap sass https
  • 选择不等待 ASP.NET Core WebAPI 控制器中的异步函数运行

    场景如下 后端 Asp NET Core WebAPI 2 2 前端 使用 API 的 iOS 和 Android 我有一个功能允许用户向其他用户发送消息 消息的发送是通过异步操作完成的 public async Task
  • 如何使用 CodeBlocks 安装 Boost 库?

    我的发言即将结束了 我正在研究保存文件和序列化 结果发现 C 不具备 Python 所具有的那种原生序列化能力pickle 但幸运的是 它有 Boost 所以我开始寻求在我的系统上安装 Boost 1 47 以便能够序列化我的对象 但到目前
  • Symfony 4.1 - CORS 问题

    我的 symfony 4 1 API 有一些问题 我正在通过使用 Angular httpclient 的离子应用程序使用我的 API 我的问题尤其是 CORS 标头Access Control Allow Methods 我遇到了 COR
  • Jackson 3rd Party 类没有默认构造函数

    我正在尝试使用 Jackson 从 Json 读取 写入我的 POJO 截至目前 我已对其进行配置并可用于我的课程 第三方课程除外 当尝试读取 Json 时 出现错误 org codehaus jackson map JsonMapping
  • 正则表达式中的“?i”和“?-i”是什么意思?

    有人可以解释一下什么吗 i and i 用正则表达式包裹一个单词是什么意思 i test i 我测试过并且匹配test TEST and teSt 但我以前从未见过这个 什么是 before i意思是 我看到了这个here https gi
  • iPhone 长 plist

    我有一些数据想要添加到我的应用程序中 大约 650 个类别 包括名称 ID 号 每个类别平均有 85 个项目 每个类别都有一个名称 ID 号 iPhone会支持这么大的plist吗 我想首先在 UITableView 中显示类别 当选择一个
  • JSON 是否应该包含空值 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在创建一个以 JSON 形式返回结果的 API 当值为空时是否应该在结果中包含键是否有当前的最佳实践 例如 title Foo Bar au