无法将 NSDictionary 值转换为 json
Posted
技术标签:
【中文标题】无法将 NSDictionary 值转换为 json【英文标题】:Unable to convert NSDictionary values to json 【发布时间】:2014-02-13 14:25:17 【问题描述】:我有 NSDictionary 值,我想将其转换为 Json 字符串,例如:
body = "10-feb";
comments = (
);
complete = 1;
"created_at" = "2014-02-09T15:56:01Z";
"due_at" = "2014-01-10 20:00:00 +0000";
"due_on" = "2014-10-02";
id = 439824;
"notification_sent" = 0;
"notify_user" = 0;
"organization_id" = 972;
participants = (
);
reminders = (
);
starred = 0;
"updated_at" = "2014-02-09T15:56:01Z";
"user_id" = 11129;
我将其转换为 json 的方式是:
- (NSString*) jsonStringWithPrettyPrint:(BOOL) prettyPrint str:(NSDictionary *)str
NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:str
options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
error:&error];
if (! jsonData)
NSLog(@"jsonStringWithPrettyPrint: error: %@", error.localizedDescription);
return @"";
else
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
我不知道为什么它总是无法转换。?
【问题讨论】:
你遇到了什么错误? 是due_at
还是NSDate
?
是的,它是一个 NSDate..我也添加了异常断点..它停止但我尝试按继续在控制台中获取堆栈跟踪,但没有任何日志和错误仍然为零。
这是错字吗??? options:(NSJSONWritingOptions) (prettyPrint ? NSJSONWritingPrettyPrinted : 0)
我不相信。
【参考方案1】:
传入NSJSONSerialization
的对象只能包含NSDictionary
、NSArray
、NSString
、NSNumber
或NSNull
。
NSDate
对象必须首先使用NSDateFormatter
显式转换为NSStrings
。
【讨论】:
将日期字符串转换为NSString
和 [NSString stringWithFormat:@"%@", date]
并且问题消失了 :)
您创建 JSON 数据的问题已经解决。但是必须有人处理数据。检查您的文档以了解他们的期望。顺便提一句。您可以更轻松地调用 [myDate description]。以上是关于无法将 NSDictionary 值转换为 json的主要内容,如果未能解决你的问题,请参考以下文章
无法将“__NSSingleObjectArrayI”类型的值转换为“NSDictionary”
Swift - 无法将“__NSCFString”类型的值转换为“NSDictionary”
Firebase Swift 无法将“__NSArrayM”(0x10591cc30)类型的值转换为“NSDictionary”
无法将“Promise<[NSDictionary]>”类型的值转换为预期的参数类型“Guarantee<Void>”
Swift JSON 错误,无法将类型“__NSArrayM”(0x507b58)的值转换为“NSDictionary”(0x507d74)
无法从 JSON 中获取值(无法将类型“__NSCFNumber”(0x7fff87b9c520)的值转换为“NSDictionary”(0x7fff87b9d5b0))