Objective c 理解Json和NSData
我们必须创建一个Jason文件发送到服务器。 我发现这样做的方式是:Objective c 理解Json和NSData,objective-c,Objective C,我们必须创建一个Jason文件发送到服务器。 我发现这样做的方式是: NSDictionary* dic = @{@"Username" :userName, @"Firstname" :firstName, @"Lastname" : lastName, @"Email" : email,
NSDictionary* dic = @{@"Username" :userName,
@"Firstname" :firstName,
@"Lastname" : lastName,
@"Email" : email,
@"Password" : pass,
};
NSData* json = [NSJSONSerialization dataWithJSONObject:dic options:0 error:nil];
我真的不明白为什么在创建了已经是Json文件的dic
之后,我必须在创建NSData
时使用NSJSONSerialization
,为什么不直接将dic
设置为NSData
?这个序列化到底是做什么的?
另外,为什么不创建一个包含此结构的
NSString
dic是Objective-C字典(键值对的集合),与JSON无关。打印字典可能类似于JSON,但事实并非如此
NSJSONSerialization
从字典创建JSON数据。JSON是一种文本格式,有文档记录,例如:。字典的JSON数据如下所示:
{"Firstname":"John","Email":"jon@apple.com","Username":"john","Lastname":"Doe","Password":"topsecret"}
NSJSONSerialization
创建NSData
而不是NSString
只是该类作者的设计决策。可以使用以下命令将数据转换为字符串:
NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
dic不是json数据,它是一个术语表。如果您必须像使用字典一样将数据发送到服务器,您可以使用一个简单的NSString对象将其作为UTF8字符发送。非常感谢。我明白。但是为什么字典一开始就像json一样使用@和{?为什么不直接用dic的键设置值,然后将其序列化为json?@Rant:
@{“Username”:Username,…}
是新的“Container Literal”语法(记录在这里:)。它看起来可能类似于json,但完全不相关。