Qt 对 XML的支持非常强大,包括对 XML 模式验证的支持。
Qt 对 JSON 的支持似乎不太广泛。我找不到任何东西似乎证实或否认支持json-schema或 Qt 中的任何其他类型的Json 模式验证。
在 Qt/C++ 中验证 json 是否有可靠的方法?
编辑:要清楚,这个问题集中在Json 模式验证上,而不仅仅是确认任意文档是否是有效的 Json。
Qt 对 XML的支持非常强大,包括对 XML 模式验证的支持。
Qt 对 JSON 的支持似乎不太广泛。我找不到任何东西似乎证实或否认支持json-schema或 Qt 中的任何其他类型的Json 模式验证。
在 Qt/C++ 中验证 json 是否有可靠的方法?
编辑:要清楚,这个问题集中在Json 模式验证上,而不仅仅是确认任意文档是否是有效的 Json。
Qt 5.8 似乎仍然没有 JSON Schema 验证......但你可以找到一堆其他有趣的库。
JSON Schema 网站上列出了 4 个 C/C++ 库:
其他 JSON Schema Validator 项目可以在 github 或 bitbucket 上找到,其中:
事实上,似乎没有 Qt 对 JSON Schema 验证的支持,即使在 Qt 5.1 中也是如此。由于编写自己的代码非常耗时,我建议:
如果您作为开发人员已经提供了 Schema,则不要使用 JSON Schema 验证进行验证,而是对解析的 JSON 执行硬编码验证(即,手动检查所需字段是否存在,是否属于正确类型,并且在指定的范围内)
如果需要处理外部 JSON Schema(即事先不知道 Schema,可能是用户定义的),那么不要使用 Qt,而是使用独立的 C/C++ JSON 验证器,例如WJElement(链接在 json-schema 网站上的那个) )
它存在http://qjson.sourceforge.net/,它也不包括模式验证。
qtplayground 中也存在Qtjsonstream,其中包括一些模式验证,但我没有使用它,所以我对它一无所知。
I'll suggest you to yse qt-json it has simple vlidation like valid or not.
bool ok;
QtJson::JsonObject result = QtJson::parse(json, ok).toMap();