JSON 响应中的键有时是 Int,有时是 String [duplicate]

A key in JSON response sometimes Int and sometimes comes as String [duplicate]

提问人:iPhone Programmatically 提问时间:10/27/2023 最后编辑:Brian Tompsett - 汤莱恩iPhone Programmatically 更新时间:10/27/2023 访问量:48

问:

当键的数据类型是随机的时,如何解析有时以 Int/string 的形式出现。以下是我的代码,到目前为止已经尝试过但没有工作:

  do {
       // let value = try String(container.decode(Int.self, forKey: .Quantity))
          let value = try container.decode(Int.self, forKey: .Quantity)
          Quantity = value == 0 ? nil : String(value)
      } catch DecodingError.typeMismatch {
        Quantity = try container.decode(String.self, forKey: .Quantity)
      }

谢谢

iOS JSON Swift 可编码

评论

0赞 iPhone Programmatically 10/27/2023
@Timmy我已经浏览了这篇文章并检查了接受的答案,但在这种情况下它不起作用。我在问题中提到的代码相同。

答:

1赞 Nick 10/27/2023 #1

如果数据类型可能发生变化,您可以简单地尝试使用其他类型解析数据,如下所示:

if let intValue = try? container.decode(Int.self, forKey: .Quantity) {
    // The integer value here
} else if stringValue = try? container.decode(String.self, forKey: .Quantity) {
    // The string value here
}

您还可以使用 来处理解析错误,如下所示:do-catch

do {
    let intValue = try container.decode(Int.self, forKey: .Quantity)
} catch DecodingError.typeMismatch {
    let stringValue = try container.decode(String.self, forKey: .Quantity)
} catch {
    // Handle an error here
}