How to include null value in the JSON via NSJSONSerialization? How to include null value in the JSON via NSJSONSerialization? ios ios

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!