How to include null value in the JSON via NSJSONSerialization?
You have to use NSNull
. For instance
Swift
let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()]
Objective-C
NSDictionary *dict = @{ @"error": [NSNull null] };
From the official documentation of NSDictionary:
Neither a key nor a value can be nil; if you need to represent a null value in a dictionary, you should use NSNull.
I tried doing this and worked for me.
var param: [String:Any] = [:]param["firstName"] = "somename"param["middleName"] = NSNull()param["lastName"] = "somename"print(param)
Result:
["firstName":"somename","middleName":null,"lastName":"somename"]
If you are using Swifty JSON, I've just created a PR that should handle nil. It's not merged yet and might need some improvements.The part that describes how to do that should be a good start to write your own implementation if you need to. The logic is not that complicated but there might be tricky edge cases/performance things to think about.
I know it's not a direct response to the question since it's replacing NSJSONSerialization
, but I hope it can help some people frustrated by how Swift handles nil/json!