常見任務,將字符串轉換爲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:「一個對象是一個*無序的*一組名稱/值對。」 –