swift - 字典顺序错误 - JSON

标签 swift foundation

我正在尝试创建一个字典,我可以将其制作成 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 做错了什么,导致这个错误。任何帮助将不胜感激 - 谢谢。

最佳答案

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

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

您还可以创建自己的集合类型,该集合类型使用字符串作为索引并使项目保持排序顺序。 Swift 使这一切变得简单,尽管计算成本很高。

关于swift - 字典顺序错误 - JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137039/

相关文章:

json - 如何快速获取特定的json值

iOS:蓝牙配对请求对话框 - 我可以知道用户的选择吗?

swift - 来自枚举的类参数

ios - 具有等效 HTTP 状态代码的所有 NSURLErrorDomain 错误是什么?

swift - Cocoa/Cocoa Touch/Foundation中如何自定义CFString音译

ios - 比较没有时间分量的 NSDates

swift - 如何在 UIPageViewController 中重复使用同一个 ViewController?

swift - RxSwift 将 UITextView 的文本映射和绑定(bind)到自定义对象的文本字段的方法?

macos - 沙盒 Mac 应用程序是否可以写入全局默认域?

swift - "Duplicate keys of type ... were found in a Dictionary "什么时候没有字典?