【发布时间】:2020-04-20 00:48:09
【问题描述】:
我有一个我在 JSON 文件中描述的结构,假设该结构名为 Dog
struct Dog {
var color: UIColor
}
我在 JSON 文件的字典中跟踪我的狗,其中每只狗的名字都充当标识符。 所以我可以拥有下一个 JSON:
"myDogs": {
"goodBoy": {
"color": "#000000"
},
"veryGoodBoy": {
"color": "#FFFFFF
}
}
为了描述我的 2 条狗,它是一个字典,我(显然)希望避免重复键,所以我希望当我解码 myDogs 时,如果 JSON 中有 2 条狗具有相同的 [String: Dog] 类型key (name) 我会得到一些错误。
令我惊讶的是,它并没有发生,而是忽略了第一个之后的所有狗,即对于这个 JSON
"myDogs": {
"goodBoy": {
"color": "#000000"
},
"veryGoodBoy": {
"color": "#FFFFFF
}
"goodBoy": {
"color": "#FF0000"
}
}
我会得到一本字典,里面有 2 条狗,一个叫“goodBoy”,黑色,另一个叫“veryGoodBoy”,白色。
有没有办法在解码阶段引发异常(或至少记录错误)?
提前致谢。
编辑
Does JSON syntax allow duplicate keys in an object? 有帮助,但它没有回答我的问题。
基本上我问的是 Swift 有没有办法在解码阶段引发异常而不重写 JSONDecoder()
【问题讨论】:
-
您的回复中不应重复一个键
-
三键 JSON 甚至无效。
JSONDecoder()解码两个密钥并忽略重复项。但实际上避免字典中的重复键是服务器的业务。 -
@Gereon 谢谢,这有助于我理解 JSON 约定。但它没有回答我的问题,Swift 中有没有办法在解码阶段引发异常而不重写
JSONDecoder()? -
标签: json swift dictionary codable