为了账号安全,请及时绑定邮箱和手机立即绑定

字典顺序错误-JSON

字典顺序错误-JSON

料青山看我应如是 2019-12-06 15:19:30
我正在尝试创建一个字典,可以将其制成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上做错了什么,这才是错误的。任何帮助将不胜感激-谢谢。
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

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

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

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


查看完整回答
反对 回复 2019-12-06
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我确实喜欢这个


 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)

    }

}


查看完整回答
反对 回复 2019-12-06
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

将字典键加载到数组中并进行排序不是解决此问题的方法。因为在很多情况下,我们需要在没有任何逻辑的情况下进行订购,所以我只想拥有一个像这样的数组:c,d,a,e。因此,唯一的方法是将序列数组放入json中,以注意到这是我想要的顺序。真烦人 用某种语言,他们没有这个麻烦。例如,它是PHP。 

查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 538 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信