如何通过NSJSONSerialization在JSON中包含空值?

ymo*_*tov 26 null json objective-c ios nsjsonserialization

我想我知道如何使用NSJSONSerialization.我正在打电话的是:

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]
Run Code Online (Sandbox Code Playgroud)

其中parameters是一个NSDictionary,其中包含要在JSON请求中使用的键和值.一切都很好,直到我必须使用null作为值而不是空字符串.我找不到将值设置为null的方法.我需要创建的json示例是:

{"target"
  {"firstname":<firstname>,
   "lastname":<lastname>},
 "error":null
}
Run Code Online (Sandbox Code Playgroud)

设置服务器的方式是,如果没有错误,它会将错误视为字符串或null.

有任何想法吗?我错过了API调用或类似的东西吗?

谢谢!

Gab*_*lla 55

你必须使用NSNull.例如

迅速

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()]
Run Code Online (Sandbox Code Playgroud)

Objective-C的

NSDictionary *dict = @{ @"error": [NSNull null] };
Run Code Online (Sandbox Code Playgroud)

NSDictionary的官方文档:

密钥和值都不能为零; 如果需要在字典中表示空值,则应使用NSNull.


小智 6

我尝试这样做并为我工作。

var param: [String:Any] = [:]

param["firstName"] = "somename"

param["middleName"] = NSNull()

param["lastName"] = "somename"

print(param)
Run Code Online (Sandbox Code Playgroud)

结果:

["firstName":"somename","middleName":null,"lastName":"somename"]
Run Code Online (Sandbox Code Playgroud)