首页 > 解决方案 > Swift 5:将数组/字典转换为 JSON 格式

问题描述

我有一个数据,如下所示:

[
  (ingredient_item: "Oil", ingredient_item_id: "1", ingredient_qty: "1", ingredient_unit_id: "Tsp", ingredient_remark: ""), 
  (ingredient_item: "Saffron", ingredient_item_id: "2", ingredient_qty: "2", ingredient_unit_id: "Tsp", ingredient_remark: ""), 
  (ingredient_item: "Rice", ingredient_item_id: "3", ingredient_qty: "2", ingredient_unit_id: "Cup", ingredient_remark: "")
]

所需的输出格式如下:

ingredients
[
 {
  ingredient_item:chicken,
  ingredient_item_id:1,
  ingredient_qty:2,
  ingredient_unit_id:2,
  ingredient_remark:abcd
 },
 {
  ingredient_item:salt,
  ingredient_item_id:2,
  ingredient_qty:2,
  ingredient_unit_id:2
  ingredient_remark:abcd
 }
]

谁能帮我解决这个问题?

标签: arraysjsonswiftdictionary

解决方案


您可以创建一个模型并对其进行编码;

let yourArray = [
  (ingredient_item: "Oil", ingredient_item_id: "1", ingredient_qty: "1", ingredient_unit_id: "Tsp", ingredient_remark: ""),
  (ingredient_item: "Saffron", ingredient_item_id: "2", ingredient_qty: "2", ingredient_unit_id: "Tsp", ingredient_remark: ""),
  (ingredient_item: "Rice", ingredient_item_id: "3", ingredient_qty: "2", ingredient_unit_id: "Cup", ingredient_remark: "")
]

struct Model: Encodable {
    var ingredient_item: String
    var ingredient_item_id: String
    var ingredient_qty: String
    var ingredient_unit_id: String
    var ingredient_remark: String
}

let arr = yourArray.map({ Model(ingredient_item: $0,
                          ingredient_item_id: $1,
                          ingredient_qty: $2,
                          ingredient_unit_id: $3,
                          ingredient_remark: $4)})

let jsonData = try! JSONEncoder().encode(arr)
let jsonString = String(data: jsonData, encoding: .utf8)

推荐阅读