Swift 5: преобразование массива / словаря в формат JSON - PullRequest
0 голосов
/ 28 мая 2020

У меня есть данные, которые приведены ниже:

[
  (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
 }
]

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

1 голос
/ 28 мая 2020

Вы можете создать модель и закодировать ее следующим образом:

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)
...