3

最后一行总是抛出异常:“JSON 字典中的无效键”。我不知道为什么。我可以打印“味精”字典。

NSDictionary* header = @{
@(udpVersion) : @"ver",
@(self.dataType) : @"type",
@(self.ack) : @"ack",
[WBUserMng sharedClient].getUserId : @"src",
};

NSDictionary* msg = @{
header:@"head",
self.payload:@"data",
};

NSError* error = nil;
return [NSJSONSerialization dataWithJSONObject:msg options:kNilOptions error:&error]
4

2 回答 2

8

我认为您在字典文字的新 Objective C 语法中值的顺序错误。应该是

NSDictionary* msg = @{
    @"head" : header,
    @"data" : self.payload
};

header字典也是如此。

于 2012-10-10T09:12:37.160 回答
-1

我第一次看到 @{} 或 @(self.dataType) 指令。我不知道你如何编译它。给我们更多提示。

NSDictionary* dic = [NSDictionary dictionaryWithObject: @"a" forKey: @"b"];

[NSJSONSerialization dataWithJSONObject: dic options: NSJSONWritingPrettyPrinted error: nil];

或者

NSString* jsonString =  @"{\"foo\": \"bar\", \"foo2\": \"bar2\"}";
// no commat one the last JSON line
[NSJSONSerialization dataWithJSONObject: jsonString options: NSJSONWritingPrettyPrinted error: nil];
于 2012-10-10T09:04:14.127 回答