【问题标题】:Swift 5 : Convert Array/Dictionary to JSON formatSwift 5:将数组/字典转换为 JSON 格式
【发布时间】:2020-05-28 11:21:29
【问题描述】:

我有一个数据如下:

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

谁能帮我解决这个问题?

【问题讨论】:

  • required output 不是有效的JSON。你能澄清一下你需要它是JSON还是完全像你指定的那样?
  • 我需要的和我指定的完全一样。我不明白它是什么数据类型。 @user28434
  • 什么的数组?使用codableserialization
  • 我使用了序列化,但出现错误 ] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__SwiftValue)' 。 @MojtabaHosseini
  • 不相关,但所有 ingredient_ 前缀是干什么用的?实际上它们是多余的,没有它们,您的数据包将缩小到一半。

标签: arrays json swift dictionary


【解决方案1】:

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

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)

【讨论】:

  • Model 我收到一个错误Use of unresolved identifier 'Model'
  • 你应该创建一个模型。检查上面编辑的答案。
  • 使用 Alamofire 将 jsonString 作为参数传递时,参数为Optional("[{\"method_stage\":\"0\",\"method_description\":\"This is method 1\"}]") 如何从中删除此“\”??
  • \"指定转义字符(字符串内的字符串)。所以如果你有一个内联的 json 字符串,它已经被包含了。
  • 有什么方法可以单独删除斜线字符吗?
猜你喜欢
  • 2020-12-02
  • 2021-10-18
  • 1970-01-01
  • 2018-11-22
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
相关资源
最近更新 更多