我正在尝试使用此代码:
NSDictionary *innerMessage
= @{@"nonce":[NSNumber numberWithInteger:nonce],
@"payload":@{@"login": [NSNull null]}};
NSError * err;
NSData * innerMessageData = [NSJSONSerialization
dataWithJSONObject:innerMessage options:0
error:&err];
使用以下结构创建JSON
对象:
{
"apikey": "e418f5b4a15608b78185540ef583b9fc",
"signature": "FN6/9dnMfLh3wZj+cAFr82HcSvmwuniMQqUlRxSQ9WxRqFpYrjY2xlvDzLC5+qSZAHts8R7KR7HbjiI3SzVxHg==",
"message":{
"nonce": 12,
"payload": {
"Login": {}
}
}
}
然而,这是我得到的实际结果:
{"nonce":1398350092512,"payload":{"login":null}}
[NSNull null]
未转换为{}
?JSON
结构谢谢!
答案 0 :(得分:3)
NSNull
假设在JSON中成为null
。
如果您想在JSON({}
)中使用空字典,则应使用空字典 - @{}
。
答案 1 :(得分:1)
将代码更改为
NSDictionary *innerMessage = @{
@"nonce":@12,
@"payload":@{@"login": @{}}
};
NSError * err;
NSData * innerMessageData = [NSJSONSerialization
dataWithJSONObject:innerMessage options:0
error:&err];
这将创建所需的响应
{
nonce = 12,
payload = {
login = {}
},
}
答案 2 :(得分:0)
null
是一个完全有效的JSON值;你在期待什么? NSJSONSerialization
应该如何知道您希望将[NSNull null]
转换为空对象? (就此而言,为什么不将空值转换为空数组,空列表或数字零?)
解决方案是在序列化之前处理您的innerMessage
,将[NSNull null]
的所有实例替换为@{}
(或等效地,[NSDictionary dictionary]
)。