57

Say in my application, some users give us their last name, and others do not. In a REST API response, which body is preferred:

With a "null" value:

{"firstName": "Bob",
 "lastName": null}

Or just a missing key:

{"firstName": "Bob"}
0

1 Answer 1

45

Consider removing empty or null values.

If a property is optional or has an empty or null value, consider dropping the property from the JSON, unless there's a strong semantic reason for its existence.

{
  "volume": 10,

  // Even though the "balance" property's value is zero, it should be left in,
  // since "0" signifies "even balance" (the value could be "-1" for left
  // balance and "+1" for right balance.
  "balance": 0,

  // The "currentlyPlaying" property can be left out since it is null.
  // "currentlyPlaying": null
}

Further Reading
Google Style Guide - Empty or Null Property Values
Should null values be included in JSON responses from a REST API?

5
  • thanks for the link, Robert. so even if currentlyPlaying will be in some responses and not other, it's preferrable to have the client check if the key is there or not rather than check if it's null?
    – jtmarmon
    May 26, 2015 at 20:00
  • null and undefined have almost the same meaning in Javascript, and you can check for both using if (myProperty == null) May 26, 2015 at 20:01
  • well actually in my case the client might be java, objective-c, or javascript. the link within the second link (API-craft) indicates to me that null fits our semantic use case, but mostly that I should just make a decision and stick to it :P thanks again
    – jtmarmon
    May 26, 2015 at 20:10
  • Simple: If the application needs to distinguish between different values, then the server must provide different values, otherwise it need not and should not. Does your app need to distinguish between a key not being present, a key have an empty string as a value, and a key having a null value?
    – gnasher729
    May 27, 2015 at 10:50
  • 8
    The answer in this post addresses some good reasons as to why you should not remove null fields.
    – Dave New
    Nov 16, 2015 at 14:57

Not the answer you're looking for? Browse other questions tagged or ask your own question.