在Qt / C ++ / C中对json模式有什么支持

时间:2013-09-04 22:16:38

标签: json qt schema

Qt support for XML非常强大,包括对XML模式验证的支持。

Qt Support for JSON似乎不那么广泛。我找不到任何东西似乎确认或拒绝支持Qt中的json-schema或任何其他类型的 Json模式验证

有没有一种在Qt / C ++中验证json的声音方法?

编辑:要清楚,这个问题集中在 Json模式验证,而不仅仅是确认任意文档是否有效Json。

4 个答案:

答案 0 :(得分:2)

实际上,即使在Qt 5.1中,似乎也没有Qt支持JSON Schema验证。由于编写自己的内容非常耗时,我建议:

  • 如果您作为开发人员提供了Schema,则不要使用JSON Schema验证进行验证,而是对已解析的JSON执行硬编码验证(即,手动检查必填字段是否存在,类型是否正确,是否在指定的范围内)

  • 如果需要处理外部JSON Schema(即,事先不知道Schema,可能是用户定义的),那么不要使用Qt,而是使用独立的C / C ++ JSON验证器,如WJElement (在json-schema网站上链接的那个)

答案 1 :(得分:1)

Qt 5.8似乎还没有JSON Schema验证......但你可以找到一堆其他有趣的库。

JSON Schema网站上列出了4个C / C ++库:

    @Boris提到的
  • wjelement针对性能进行了优化,并由Messaging Architects用于电子邮件生产环境。它是一个C库,但也可以使用C ++包装器(wjelement-cpp)。
  • valijson是一个仅限标头的Schema Validator,可以与其他JSON解析器一起使用。
  • json-schema-validator基于nlohmann's modern c++ JSON parser,它具有与STL容器良好交互的良好功能。但是这个验证器似乎不太成熟。

其他JSON Schema Validator项目可以在github或bitbucket上找到,其中包括:

  • jv_json致力于嵌入式应用程序。
  • libvariant也可以处理YAML和PLIST格式。

答案 2 :(得分:0)

它存在http://qjson.sourceforge.net/,也不包括架构验证。

它在qtplayground中也存在Qtjsonstream,其中包括一些模式验证,但我没有使用它,所以我对此一无所知。

答案 3 :(得分:-1)

我建议您使用qt-json这是简单的验证,如有效与否。

bool ok;
QtJson::JsonObject result = QtJson::parse(json, ok).toMap();