首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典错误顺序- JSON

字典错误顺序- JSON
EN

Stack Overflow用户
提问于 2015-06-27 12:51:11
回答 2查看 5.1K关注 0票数 3

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

示例:

代码语言:javascript
复制
    var users = [
[
"First": "Albert", 
"Last": "Einstein", 
    "Address":[
        "Street": "112 Mercer Street",
        "City": "Princeton"]
],
[
"First": "Marie", 
"Last": "Curie", 
    "Address":[
        "Street": "108 boulevard Kellermann",
        "City": "Paris"]]
]

我使用这个函数

代码语言:javascript
复制
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
}

但我的结果是:

代码语言:javascript
复制
[
  {
    "First" : "Albert",
    "Address" : {
      "Street" : "112 Mercer Street",
      "City" : "Princeton"
    },
    "Last" : "Einstein"
  },
  {
    "First" : "Marie",
    "Address" : {
      "Street" : "108 boulevard Kellermann",
      "City" : "Paris"
    },
    "Last" : "Curie"
  }
]

Problem:为什么姓是最后一个?我想应该在地址上面。请让我知道我的NSDictionary做错了什么,因为这是错误的。任何帮助都将是非常感谢的-谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-27 14:17:18

发表评论中已经说过的话:字典是“无序收藏”。它们根本没有对它们的键/值对的任何顺序。句号。

如果你想要一个有序的集合,使用字典以外的东西。(一组单项词典是实现这一目标的一种方法。)您还可以编写代码,将字典的键加载到可变数组中,对数组进行排序,然后使用已排序的键数组以所需的顺序获取键/值对。

您还可以创建自己的集合类型,该类型使用字符串作为索引,并将项目按排序顺序排列。斯威夫特让这件事变得简单明了,尽管这在计算上是昂贵的。

票数 8
EN

Stack Overflow用户

发布于 2017-07-19 19:55:03

我确实很喜欢这个。

代码语言:javascript
复制
 let stagesDict = NSDictionary()
 if let strVal = sleepItemDict["stages"] as? NSDictionary {
 stagesDict = strVal
let sortedKeys = (stagesDict.allKeys as! [String]).sorted(by: <) 
 var sortedValues : [Int] = []
  for key in sortedKeys {
     let value = stagesDict[key]!
      print("\(key): \(value)")
      sortedValues.append(value as! Int)
    }
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31088973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档