以下代码有条件地连接字典的字符串似乎可以解决我尝试将连接结果放在字典中的问题。任何人都可以看到错误吗?
NSDictionary *jsonDictionary;
NSString* dictString = @"@\"first\":first,@\"last"
NSString *dictString2=dictString;
if (date.length>0&&![date isKindOfClass:[NSNull class]]) {
//only include this key value pair if the value is not missing
dictString2 = [NSString stringWithFormat:@"%@%s", dictString, "@\"date\":date"];
}
jsonDictionary = @{dictString2}; //syntax error. Says expected colon but that does not fix anything
答案 0 :(得分:0)
使用对象文字创建NSDictionary
的语法是:
dictionary = @{key:value}
(并且可选地,它可以包含由逗号分隔的多个键/值对,但现在不用介意。)
其中“key”和“value”都是NSObject
s。
抛出错误的行只包含1件事。 dictString2
中字符串的内容与它无关。
在我看来,您正在尝试手动构建JSON
字符串。不要那样做。使用NSJSONSerialization
。该类有一个方法dataWithJSONObject
,它以NSObject
作为输入,并返回包含NSData
字符串的JSON
。这就是你应该如何创建JSON
输出。
答案 1 :(得分:0)
使用可能为null的值创建NSDictionary:
NSDictionary *dict = @{
@"key" : value ?: [NSNull null],
};
序列化字典时,{J}中的NSNull
被翻译为null
。
如果您想完全排除这些密钥,而不是让它们具有null
值,那么您将需要做更多的工作。最简单的方法是使用NSMutableDictionary
并在添加之前测试每个值。