默认状态下, mORMot的SynCommon.pas单元的JSON反序列化会需要保证JSON中的字段和声明的结构体是一致的 例如,
|
|
是不能被反序列化到下面这个结构体的
|
|
在官方博客有篇帖子提到这样的需求 链接
使用 soReadIgnoreUnknownFields
选项即可让反序列化忽略不存在的字段
|
|
- soReadIgnoreUnknownFields to ignore any non defined field in the incoming JSON;
- soWriteHumanReadable to let the output JSON be more readable.
不过一般使用的时候, 对于这种的需求还是很大的, 如果有个JSON, 里面有几十个字段, 而且还疯狂嵌套, 那简直是要疯了
于是, 直接在源码上进行修改, 以永久实现这个功能
在SynCommon.pas
文件搜索 TJSONRecordAbstract.Create
, 并增加一行
|
|
这样就可以实现, 默认忽略字段, 并且输出JSON时是可读性更好的已展开的JSON
最后, 为保证这个修改可以一直生效, 可以使用自己的GIT仓库, 把这个修改提交到自己的仓库中. 就像这样
origin/master 对应官方的仓库 origin2/master 对应自己本地的仓库
origin2中包含这个自定义的修改, 以后官方有修改了, 就先拉取一下origin, 然后推送到origin2, 那么以后要用代码了就从origin2克隆一份就行了