一尘不染

字典顺序错误-JSON

swift

我正在尝试创建一个字典,可以将其制成JSON格式的对象并发送到服务器。

例:

    var users = [
[
"First": "Albert", 
"Last": "Einstein", 
    "Address":[
        "Street": "112 Mercer Street",
        "City": "Princeton"]
],
[
"First": "Marie", 
"Last": "Curie", 
    "Address":[
        "Street": "108 boulevard Kellermann",
        "City": "Paris"]]
]

我用这个功能

func nsobjectToJSON(swiftObject: NSObject) -> NSString {
    var jsonCreationError: NSError?
    let jsonData: NSData = NSJSONSerialization.dataWithJSONObject(swiftObject, options: NSJSONWritingOptions.PrettyPrinted, error: &jsonCreationError)!
    var strJSON = NSString()

    if jsonCreationError != nil {
        println("Errors: \(jsonCreationError)")
    }
    else {
        // everything is fine and we have our json stored as an NSData object. We can convert into NSString
        strJSON =  NSString(data: jsonData, encoding: NSUTF8StringEncoding)!
        println("\(strJSON)")
    }
    return strJSON
}

但是我的结果是这样的:

[
  {
    "First" : "Albert",
    "Address" : {
      "Street" : "112 Mercer Street",
      "City" : "Princeton"
    },
    "Last" : "Einstein"
  },
  {
    "First" : "Marie",
    "Address" : {
      "Street" : "108 boulevard Kellermann",
      "City" : "Paris"
    },
    "Last" : "Curie"
  }
]

问题 :为什么姓氏是姓氏?我认为 应该 在地址上方。请让我知道我在NSDictionary上做错了什么,这才是错误的。任何帮助将不胜感激-谢谢。


阅读 221

收藏
2020-07-07

共1个答案

一尘不染

发表评论中已经说过的话:词典是“无序集合”。他们的键/值对根本没有任何顺序。期。

如果要有序集合,请使用除字典外的其他东西。(执行单项词典的数组是一种方法。)您还可以编写代码,将字典的键加载到可变数组中,对数组进行排序,然后使用键的排序后的数组来获取字典中的键/值对。所需的顺序。

您还可以创建自己的集合类型,该集合类型使用字符串作为索引并使项目保持排序。Swift使其简单明了,尽管在计算上会很昂贵。

2020-07-07