如何从类对象列表中构造一个 json 对象

Posted

技术标签:

【中文标题】如何从类对象列表中构造一个 json 对象【英文标题】:How to construct a json object from list of class objects 【发布时间】:2015-08-07 13:10:26 【问题描述】:

我正在研究如何从类对象列表中构造或创建子对象。

我有一个 Category 类,看起来像:

class Category 

    var Code: Int?
    var Label: String?


    init(Code: Int, Label: String) 
        self.Code = Code
        self.Label = Int

    

然后我有一个类别列表var categories = [Category]()

然后我像这样附加我的列表:

  categories.append(5,"Shoes")

如何构造一个如下所示的 json 对象:


"List":[

"Code":"5",
"Label":"Shoes"
,

....
]

【问题讨论】:

考虑使用像 ObjectMapper 这样的外部框架,例如 github.com/Hearst-DD/ObjectMapper 我会推荐使用 swiftyJSON。 github.com/SwiftyJSON/SwiftyJSON 【参考方案1】:

步骤 1

首先我们更新您的Category 课程。

class Category 

    var code: Int // this is no longer optional
    var label: String // this neither

    init(code: Int, label: String) 
        self.code = code
        self.label = label
    

    var asDictionary : [String:AnyObject] 
        return ["Code": code, "Label": label]
    

第二步

现在我们创建一个类别列表

var categories = [
    Category(code: 0, label: "zero"),
    Category(code: 1, label: "one"),
    Category(code: 2, label: "two")
]

然后我们将它们转换成字典列表

let list = categories.map  $0.asDictionary 

最后让我们创建 json

let json = ["List":list]

看起来有效

NSJSONSerialization.isValidJSONObject(json) // true

希望这会有所帮助。

【讨论】:

但是怎么转成JSON呢,变量JSON还是一个列表 不,变量 json 是一个字典 [String:AnyObject],它确实代表一个 JSON。您期望什么类型的对象? 我想要一个可以在 post 请求中发送的 json 对象 您可以使用 NSJSONSerialization.JSONObjectWithData 将 Dictionary 转换为 NSData,如此处所述***.com/questions/27654550/…。然后你可以执行一个 POST 请求。

以上是关于如何从类对象列表中构造一个 json 对象的主要内容,如果未能解决你的问题,请参考以下文章

如何从类函数内部访问对象属性[重复]

从类对象列表中选择时设置属性值

如何在另一个类中调用列表对象

如何从来自api响应的json字符串构造对象列表?

从类修改表单中的标签和对象 (VB.NET)

c++ 和 OpenGl:如何从类中创建网格对象实例