JSON with object keys sorted, so key order doesn't change it (as with hashObject), leaving out keys whose value is undefined and keys for which excludeKey returns true.