常见任务,将字符串转换为JSON格式。是的,简单,在StackOverflow上有关于此的大量答案。JSON格式:以正确的顺序获取输出
有什么不容易理解的是为什么我得到的顺序不同于我把对象放在NSDictionary中的顺序。
这是我写的代码:
-(NSString*)createJSONstring
{
//http://www.raywenderlich.com/5492/working-with-json-in-ios-5
NSDictionary* dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"<xx3-xxxx>",@"from",
@"<xxx-xxx>",@"to",
@"<Bla bla bla>",@"message",
@"<2000>",@"posixtime", nil];
NSArray* notifications = [NSArray arrayWithObjects:dictionary, nil];
NSError *writeError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:notifications options:NSJSONWritingPrettyPrinted error:&writeError];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"JSON Output: %@", jsonString);
return jsonString;
}
我希望得到的东西是这样的:
{
"from" : "<xx3-xxxx>"
"to" : "<xxx-xxx>",
"message" : "<Bla bla bla>",
"posixtime" : "<2000>",
}
但我得到一个不同的顺序:
{
"posixtime" : "<2000>", <----- INCORRECT
"to" : "<xxx-xxx>",
"message" : "<Bla bla bla>",
"from" : "<xx3-xxxx>" <----- INCORRECT
}
哪有我按照插入数组的顺序获得输出结果?
[NSDictionary dictionaryWithObjectsAndKeys: //I want it to be:
@"<xx3-xxxx>",@"from", //1st
@"<xxx-xxx>",@"to", //2nd
@"<Bla bla bla>",@"message", //3rd
@"<2000>",@"posixtime", nil]; //4th
通常,使用字典时,顺序无关紧要,因为您可以通过键访问值。你能否扩展需要键控项目一致的用例? – GnarlyDog
JSON“对象”中的键/值对的顺序不保证保留。 –
来自json.org:“一个对象是一个*无序的*一组名称/值对。” –