【问题标题】:Issues with Codable struct and Measuments<Unit>Codable struct 和 Measuments<Unit> 的问题
【发布时间】:2021-06-27 07:23:59
【问题描述】:

不知道如何保存到 Dimension 类的 JSON 标准单位,我有一个结构:

struct Item: Hashable, Identifiable, Codable {
    var id: Int
    var name: String
    var price: Int
    var unit: Measurement<Unit>
}

Xcode 不会抛出任何错误,所以我假设 Measurement 可以被编码?我真的不能让它工作并保存一个 json,如果我想用一个测试 json 加载结构,我的 json 数据应该是什么样子?

[
    {
        "id": 1,
        "name": "Test",
        "price": 195,
        "unit": ???
    }
]

我的想法是使用标准 Dimension 类进行操作,该类包含我需要的所有单位 (kg/g/L/ml),而不是创建自己的类并从头开始描述所有单位。 是否可以有一个带有 "unit": "kg" 的 JSON,然后会自动匹配标准 UnitMass.kilogram?

谢谢。

【问题讨论】:

  • 什么实际上不起作用?

标签: json swift xcode


【解决方案1】:

对我来说,这实际上适用于这个(简化的)示例:

struct Item: Codable {
    
    var name: String
    var unit: Measurement<Unit>
}

let json =
"""
{
    "name": "Test",
    "unit": {
        "value": 12,
        "unit": {
            "symbol": "ml"
        }
    }
}
""".data(using: .utf8)!

let item = try JSONDecoder().decode(Item.self, from: json)

产生正确的结果。您可以将单位符号替换为您喜欢的任何内容(kg、g、ml 等)

【讨论】:

  • 太好了,我的 json 不正确,但以你的为例,我可以看到它确实有效……只需要测试解码后的数据是否可以在代码中用作 Unit 类型。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多