如何确保所有JSON字段都在Swift Decodable模型中显示?

时间:2019-09-04 18:35:22

标签: json swift codable decodable

让我们想象一个第三方JSON API返回这样的模型:

{
  "key1": "Hello"
}

因此,我们将其描述如下:

struct Model: Codable {
  var key1: String
}

最终JSON模型获得了一个新字段...

{
  "key1": "Hello",
  "key2": {
    "key3": "World"
  }
}

…并且旧的Model仍然有效,但是它错过了新的属性key2

有什么方法可以验证所有 JSON密钥是否出现在“可解码”模型中?

1 个答案:

答案 0 :(得分:2)

这是一种通过使用#include <inttypes.h> #include <stdio.h> #include <stdint.h> int main() { uint64_t parts[4] = {0, 0, 0, 1}; while (!(parts[0] == 0xFFFFFFFFFFFFFFFF && parts[1] == 0xFFFFFFFFFFFFFFFE && parts[2] == 0xBAAEDCE6AF48A03B && parts[3] == 0xBFD25E8CD0364140)) { printf("%016"PRIX64"%016"PRIX64"%016"PRIX64"%016"PRIX64"\n", parts[0], parts[1], parts[2], parts[3]); if (++parts[3] == 0) if (++parts[2] == 0) if (++parts[1] == 0) ++parts[0]; } } 获取json消息中的所有键,然后使用反射将它们与解析的数据中的键进行比较的方法。

此代码仅比较计数,更彻底的检查应验证每个单独的键

JSONSerialization