我正在尝试创建一个字典,可以将其制成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使其简单明了,尽管在计算上会很昂贵。