undefined represents a missing primitive OR object value, while
null represents just a missing object value.
See, for example, this section in Speaking JS.
The use of
null in JSON, however, does not seem to obey this principle. If the value of my key is missing, JSON represents this situation as "the key is present with the value
null". But the value could have been either a primitive or an object, so wouldn't it be more correct to those semantics to use
undefined in this case?