如何通过NSJSONSerialization在JSON中包含空值?
我想我知道如何使用NSJSONSerialization。 我打的电话是:
[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]
其中参数是一个NSDictionary,其中包含在JSON请求中使用的键和值。 一切都很好,所有,直到我必须使用null作为一个值,而不是一个空string。 我找不到一种方法来将该值设置为null 。 我需要创build的json的例子是:
{"target" {"firstname":<firstname>, "lastname":<lastname>}, "error":null }
服务器设置的方式是,如果没有错误,那么它要么将错误当作string,要么将为空 。
有任何想法吗? 我是否错过了一个API调用或类似的东西?
谢谢!
你必须使用NSNull
。 例如
迅速
let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()]
Objective-C的
NSDictionary *dict = @{ @"error": [NSNull null] };
从NSDictionary的官方文档:
关键和价值都不是零; 如果您需要在字典中表示空值,则应该使用NSNull。
如果您使用的是Swifty JSON,我刚刚创build了一个应该处理nil 的PR 。 它尚未合并,可能需要一些改进。 描述如何做这件事的部分应该是一个很好的开始,如果你需要写你自己的实现。 逻辑不是那么复杂,但可能会有棘手的边缘案例/性能事情要考虑。
我知道这不是对这个问题的直接回应,因为它取代了NSJSONSerialization
,但我希望它可以帮助一些人由于Swift处理nil / json而感到沮丧!
只要尝试这样的事情:
NSDictionary *jsonObj = [NSDictionary dictionaryWithObjectsAndKeys:@"My Name", @"name", @"Developer", @"occupation", NULL, @"My NULL field", nil];
并使用这个对象作为你想要的参数。