32

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

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]

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

{"target"
  {"firstname":<firstname>,
   "lastname":<lastname>},
 "error":null
}

服务器的设置方式是,如果没有错误,它会期望错误作为字符串或null 。

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

谢谢!

4

4 回答 4

62

你必须使用NSNull. 例如

迅速

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()]

Objective-C

NSDictionary *dict = @{ @"error": [NSNull null] };

来自NSDictionary的官方文档:

键和值都不能为 nil;如果你需要在字典中表示一个空值,你应该使用 NSNull。

于 2012-12-17T04:06:58.007 回答
3

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

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

param["firstName"] = "somename"

param["middleName"] = NSNull()

param["lastName"] = "somename"

print(param)

结果:

["firstName":"somename","middleName":null,"lastName":"somename"]
于 2019-11-15T07:45:35.693 回答
0

如果您使用的是 Swifty JSON,我刚刚创建了一个应该处理 nil的 PR 。它尚未合并,可能需要一些改进。如果需要,描述如何做到这一点的部分应该是编写自己的实现的良好开端。逻辑并不复杂,但可能需要考虑棘手的边缘情况/性能问题。

我知道这不是对问题的直接回应,因为它正在替换NSJSONSerialization,但我希望它可以帮助一些对 Swift 如何处理 nil/json 感到沮丧的人!

于 2016-08-31T21:33:02.950 回答
-4

试试这样的事情:

NSDictionary *jsonObj = [NSDictionary dictionaryWithObjectsAndKeys:@"My Name", @"name", @"Developer", @"occupation", NULL, @"My NULL field", nil];

并将此对象用作您想要的参数。

于 2012-12-17T04:14:01.410 回答