在Swift中创建某个JSON数据结构

时间:2014-12-06 17:12:57

标签: json swift

对于后端通信,我的应用程序需要一种方法来创建一个肯定结构化的JSON,这就是我努力的地方。 创建的JSON应该如下所示:

{    
"data": {    
"color":"yellow",    
"size":"big"    
}    
}    

使用所需数据序列化字典似乎没有正确格式化内容的选项,我的最佳结果如下所示:

Optional({    
Kategorie = Strassenschaeden;    
PLZ = 46282;    
Strasse = Erftweg;    
Unterkategorie = Schlagloch;    
})    

我没有为我的问题找到任何有用的网页链接,因为我是Swift及其文档的新手,我现在有点卡住了。 所以我的问题是: 什么是我的JSON数据(字典/数组)的首选数据结构,我如何创建格式良好的JSON? 在此先感谢:)

编辑:这是我用来实现“最佳结果”的有趣部分:

var data: [String: String] = ["Kategorie": "\(Kategorie)", "Unterkategorie": "\(Unterkategorie)", "Strasse": "\(Strasse)","PLZ": "\(PLZ)"]

self.post(data, url: "http://*************") { (succeeded: Bool, msg: String) -> () in
        var alert = UIAlertView(title: "Success!", message: msg, delegate: nil, cancelButtonTitle: "Okay.")

func post(params : Dictionary<String, String>, url : String, postCompleted : (succeeded: Bool, msg: String) -> ()) {
    var request = NSMutableURLRequest(URL: NSURL(string: url)!)

let JSONData:NSData = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted, error: &err)!
var json = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: &err) as? NSDictionary
println(json)

2 个答案:

答案 0 :(得分:2)

下面

let JSONData:NSData = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted, error: &err)!
var json = NSJSONSerialization.JSONObjectWithData(JSONData, options: nil, error: &err) as? NSDictionary

您正在将params字典转换为JSON数据 - 然后转换 JSON数据回来做一本字典!你可能想要的是创建一个字符串 来自JSON数据:

let jsonData = NSJSONSerialization.dataWithJSONObject(params, options: .PrettyPrinted, error: &err)!
let json = NSString(data: jsonData, encoding: NSUTF8StringEncoding)!
println(json)

说明:

  • 属性和变量的名称应以小写字母开头,例如 jsonData
  • 这里不需要显式类型注释:NSData,Swift编译器可以 自动推断类型。
  • 该选项可以.PrettyPrinted而不是NSJSONWritingOptions.PrettyPrinted给出,编译器推断枚举类型 自动。
  • 不应使用!强制解包,而应使用可选绑定进行检查 为了成功。

答案 1 :(得分:0)

只是一个痒,这里没有人建议swiftyJSON在Swift中使用JSON。

尝试一下,你将失去处理JSON的痛苦。 https://github.com/SwiftyJSON/SwiftyJSON

阅读JSON

let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
let jsonObject = JSON(data: jsonData!)

写JSON

let jsonString = jsonObject.rawString()