为 POST 请求将对象转换为 JSON 字符串

Converting Object to JSON String For POST Request

我有一个对象是 class 的一个实例,类似于:

class MyClass {
    let aString: String
    let bString: String
    var cArray = [AnotherClass]()

    init etc...
}

AnotherClass 类似于:

class AnotherClass {
    let aInt: Int
    let bInt: Int
    var cFloat = Float

    init etc...
}

好的,现在我需要将该对象(MyClass 的实例)作为 POST 请求 string 参数传递,格式如下:

 {
     "aString": "1",
     "bString": "yannis",
     "cArray": [
       {
         "aInt": 1965887,
         "bInt": 36513032311523,
         "cFloat": 1.0
       },
       {
         "aInt": 1916915,
         "bInt": 360397932121597,
         "cFloat": 1.0
       }
     ]
 }

有什么想法可以实现吗?我正在使用 Swift 1.2(和 SwiftyJSON,如果有帮助的话) 谢谢!

首先,据我所知SwiftyJSON不支持对象映射到JSON,它只用于解析JSON对象检索来自某些来源。

如果您需要将 对象映射到 JSON,您可以使用一些不错的库,例如以下两个:

两者的文档都很容易理解。但是如果你不需要从一个非常复杂的 class 创建一个非常复杂的 JSON,你可以自己处理它,使用一些方法将你的对象映射到 JSON 并借助class NSJSONSerialization you can validate your creation before use it. You can learn a lot from make the mapping yourself in the Strong Type Object Serialization to JSON (Nerd Alert) 文章。

希望对你有所帮助。

您需要通过添加以下函数将两个对象转换为字典:

func convertToDictionary() -> Dictionary<String, AnyObject> {

    return [
        "aString": self.aString,
        "bString": self.bString,
        "cArray": self.cArray
    ]
}

都 类。

然后使用以下序列化它:

let theJSONData = NSJSONSerialization.dataWithJSONObject(
  dictionary ,
  options: NSJSONWritingOptions(0),
  error: nil)

其中 dictionary 类似于 dictionary = myClass.convertToDictionary

甚至可以在序列化 MyClass 对象之前序列化 MyClass 数组中的嵌套对象。