在Swift中从模型中创建价值数组到字符串。

问题描述 投票:0回答:1

我想创建这样的数据 enter image description here

从模式上看enter image description here

但我得到的数据是这样的enter image description here

我如何才能得到这样的数据结构(顶部)? 干净的数据中没有模型名称,也没有可选的数据

注:我使用了这样的方法创建值

        for i in 0 ..< self.dataProduct.count {
        let id_sell = "\(self.dataProduct[i].seller_id ?? 0)"
        let origin = self.dataProduct[i].origin ?? 0
        let product = self.dataProduct[i].product ?? []

        var dataItem = [DataCheckoutMitras.ProductItemCheckout]()
        var itemMitra : DataCheckoutMitras?
        var dataCourierSelected : CourierObject?
        for x in 0 ..< product.count {
            var item : DataCheckoutMitras.ProductItemCheckout?

            item = DataCheckoutMitras.ProductItemCheckout(product_id: product[x].product_id ?? 0,
                                                          name: product[x].name ?? "",
                                                          price: product[x].price ?? 0,
                                                          subTotal: product[x].subTotal ?? 0,
                                                          quantity: product[x].quantity ?? 0,
                                                          weight: product[x].weight ?? 0,
                                                          origin_item: origin,
                                                          notes: product[x].notes ?? "")

            dataItem.append(item!)
        }

        for x in 0 ..< self.id_seller.count {
            if id_sell == self.id_seller[x] {
                dataCourierSelected = self.dataKurir[x]
            }
        }

        itemMitra = DataCheckoutMitras(origin: origin, select_price_courier: dataCourierSelected, items: dataItem)
        mitras.append(itemMitra!)
    }
swift multidimensional-array
1个回答
2
投票

你所面临的问题是因为你在打印结构的定义。你想要的是JSON,所以你需要。

  1. 实现 Codable 协议在你的两个 struct这也适用于你的 CourierObject

    
    struct DataCheckoutMitras: Codable {
        let origin: Int?
        let items: [ProductItemCheckout]?
    
        struct ProductItemCheckout: Codable {
            let product_id : Int?
            let name : String?
        }
    }
    
  2. 将结构编码为JSON数据,使用 JSONEncoder

    let encodedJSONData = try! JSONEncoder().encode(mitras)
    
  3. 将JSON转换为字符串

    let jsonString = String(data: encodedJSONData, encoding: .utf8)
    print(jsonString)
    
© www.soinside.com 2019 - 2024. All rights reserved.