让我们想象一个第三方JSON API返回这样的模型:
{
"key1": "Hello"
}
因此,我们将其描述如下:
struct Model: Codable {
var key1: String
}
最终JSON模型获得了一个新字段...
{
"key1": "Hello",
"key2": {
"key3": "World"
}
}
…并且旧的Model
仍然有效,但是它错过了新的属性key2
。
有什么方法可以验证所有 JSON密钥是否出现在“可解码”模型中?
答案 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