我需要在swift 3中创建以下json,我不想使用外部库。 我试过this answer但是我在数组中使用自定义类(存储和产品),所以它不起作用。
"order":
[{
"store": 1,
"product": [
{
"id": 1,
"quantity": 1
},
{
"id": 2,
"quantity": 5
}]
},
{
"store": 4,
"product": [ {
"id": 1,
"quantity": 1
},
{
"id": 3,
"quantity": 1
}]
}]
}
答案 0 :(得分:2)
非常确定您可以使用以下内容来表达这一点:
1)在对象的类
中创建一个toJSON()函数2)在此对象中创建一个存储属性及其值的字典。
以下是基于json示例的几个小类的示例:
class Order {
var store: Store!
var products: [Product]!
init(store: Store, products: [Product]) {
self.store = store
self.products = products
}
func toJSON() -> [String : Any] {
var dictionary: [String : Any] = [:]
dictionary["store"] = store.toJSON()
var productsDictionary: [Int : Any] = [:]
for index in 0...self.products.count - 1 {
let product: Product = products[index]
productsDictionary[index] = product.toJSON()
}
dictionary["product"] = productsDictionary
return dictionary
}
}
class Store {
var id: Int!
init(id: Int) {
self.id = id
}
func toJSON() -> [String:Any] {
var dictionary: [String : Any] = [:]
dictionary["id"] = self.id
return dictionary
}
}
class Product {
var id: Int!
var quantity: Int!
init(id: Int, quantity: Int) {
self.id = id
self.quantity = quantity
}
func toJSON() -> [String:Any] {
var dictionary: [String : Any] = [:]
dictionary["id"] = self.id
dictionary["quantity"] = self.quantity
return dictionary
}
}
3)按照您发布的示例链接
NSJSONSerialization.dataWithJSONObject(order.toJSON(), options: nil, error: nil)
答案 1 :(得分:0)
为名为“ToDictionary”的类添加一个方法,该方法返回一个用字段和值手工编码的字典。然后在该字典上调用NSJSONSerialization。在ObjC下你可以使用反射,但那里还没有......