在swift中,具有相同密钥的JsonDecoder解码数组作为不同的数据类型出现

在swift中,具有相同密钥的JsonDecoder解码数组作为不同的数据类型出现,swift,Swift,样本响应: let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!) struct MenuResponseModel : Codable { let ratingAverage : Double? let ratingcount : Int? } ratingAverage==>有时会出现“Double”或“Int” 有人可以建议我,如何使用可编码方法来实现这一点吗?正如我在评

样本响应:

 let responseData = try JSONDecoder().decode(MenuResponseModel, from: jsonData!)


struct MenuResponseModel : Codable {
  let ratingAverage : Double?
  let ratingcount : Int?
}
ratingAverage==>有时会出现“Double”或“Int”


有人可以建议我,如何使用可编码方法来实现这一点吗?

正如我在评论中所说的那样,Double同时考虑了
Int
和浮点值

有两个主要问题:

  • 您必须解码一个数组
    [menuressponsemodel]
  • reviewCount
    与结构成员
    ratingcount

  • 这将正确解码JSON

    [{
    "ratingAverage": 3,
    "reviewCount": 100,
    },{
    "ratingAverage": 4.2,
    "reviewCount": 10,
    }]
    

    解码总是
    Double
    ,它也接受
    Int
    值。但是,它不接受。
    Double.self
    会解码
    Int
    值,可能是值是
    String
    (用双引号括起来)?你能给我分享一些示例代码@vadianNo,你能分享一些更多的信息吗?比如这两种情况下的JSON。
    let jsonString = """
    [{"ratingAverage": 3,"reviewCount": 100},
     {"ratingAverage": 4.2,"reviewCount": 10}
    ]
    """
    
    struct MenuResponseModel : Codable {
      let ratingAverage : Double
      let reviewCount : Int
    }
    
    let data = Data(jsonString.utf8)
    
    do {
        let result = try JSONDecoder().decode([MenuResponseModel].self, from: data)
        print(result)
    } catch {
        print(error)
    }