【问题标题】:Converting Object to JSON String For POST Request将对象转换为 POST 请求的 JSON 字符串
【发布时间】:2015-08-20 13:10:33
【问题描述】:

我有一个对象,它是与此类似的类的实例:

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

    init etc...
}

另一个类是这样的:

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,如果有帮助的话) 谢谢!

【问题讨论】:

    标签: json swift post ios8 swifty-json


    【解决方案1】:

    首先,据我所知SwiftyJSON 不支持Object Mapping to JSON,它仅用于解析从某个来源检索到的 JSON 对象。

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

    两者的文档都很容易理解。但是,如果您不需要从一个非常复杂的类创建一个非常复杂的 JSON,您可以使用一些方法将您的对象映射到 JSON 并在 NSJSONSerialization 类的帮助下自己处理它,您可以在使用前验证您的创建它。您可以在 Strong Type Object Serialization to JSON (Nerd Alert) 文章中从自己制作映射中学到很多东西。

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

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

      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 数组中的嵌套对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-23
        • 2012-06-14
        相关资源
        最近更新 更多