Ios JSON格式:以正确的顺序获取输出

Ios JSON格式:以正确的顺序获取输出,ios,objective-c,json,nsdictionary,nsdata,Ios,Objective C,Json,Nsdictionary,Nsdata,通用任务,将字符串转换为JSON格式。是的,很简单,关于这个问题有很多答案 对我来说,不容易理解的是,为什么我得到的顺序与我在NSDictionary中放置pair对象的顺序不同 这就是我写的代码: -(NSString*)createJSONstring { //http://www.raywenderlich.com/5492/working-with-json-in-ios-5 NSDictionary* dictionary = [NSDictionary diction

通用任务,将字符串转换为JSON格式。是的,很简单,关于这个问题有很多答案

对我来说,不容易理解的是,为什么我得到的顺序与我在NSDictionary中放置pair对象的顺序不同

这就是我写的代码:

-(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;
}
-(NSString*)createJSONstring
{
//http://www.raywenderlich.com/5492/working-with-json-in-ios-5
NSDictionary*dictionary=[NSDictionary dictionary WithObjectsAndKeys:
@“,@”来自“,
@“,@”至“,
@“,@”消息,
@“,@“posixtime”,无];
NSArray*通知=[NSArray arrayWithObjects:dictionary,nil];
n错误*writeError=nil;
NSData*jsonData=[NSJSONSerialization dataWithJSONObject:通知选项:NSJSONWriting预打印错误:&writeError];
NSString*jsonString=[[NSString alloc]initWithData:jsonData编码:NSUTF8StringEncoding];
NSLog(@“JSON输出:%@”,jsonString);
返回jsonString;
}
我希望得到这样的结果:

 {
    "from" : "<xx3-xxxx>"
    "to" : "<xxx-xxx>",
    "message" : "<Bla bla bla>",
    "posixtime" : "<2000>",
  }
{
“发件人”:”
“致”:“,
“电文”:“,
“posixtime”:“,
}
但我得到了一个不同的订单:

 {
    "posixtime" : "<2000>",       <----- INCORRECT
    "to" : "<xxx-xxx>",
    "message" : "<Bla bla bla>",
    "from" : "<xx3-xxxx>"         <----- INCORRECT  
  }
{

“posixtime”:“,”一个
NSDictionary
中的键/值对没有顺序。你可以按顺序添加它们,但字典中没有顺序信息。因此,当你创建JSON时,它会以任意顺序出现


如果您需要以特定顺序显示内容,那么您不应该使用字典,或者应该按照您想要的顺序将项目流式传输到JSON中(例如,使用).

通常,对于字典,顺序是不相关的,因为您将通过键访问值。您能否扩展要求键控项顺序一致的用例?JSON“对象”中键/值对的顺序不保证保留。来自JSON.org:“对象是一组无序的名称/值对。”当然,另一端的解析器也不能保证保持顺序。JSON“object”中的条目应该被认为是无序的。@HotLicks,我同意它们应该(被认为是无序的),但有时您需要与另一方进行整合,他们为订单赋予了意义-这总是很有趣的…如果另一方要求以特定的顺序输入条目,那么它可能还做了很多其他错误的事情。感谢您的回答:-)
[NSDictionary dictionaryWithObjectsAndKeys:                  //I want it to be:
                                    @"<xx3-xxxx>",@"from",         //1st
                                    @"<xxx-xxx>",@"to",            //2nd
                                    @"<Bla bla bla>",@"message",   //3rd
                                    @"<2000>",@"posixtime", nil];  //4th