【发布时间】:2017-12-11 15:19:04
【问题描述】:
试图找出一个通用的 JSON 值解析方法。
-
没有错误检查:
myField = jsonValue["myField"].as_string();` -
带错误检查:
if (jsonValue.is_null()) return false; if (!jsonValue.is_object()) return false; for (auto it = jsonValue.as_object().cbegin(); it != jsonValue.as_object().cend(); ++it) { const std::string& str = it->first; const json::value& v = it->second; if (str == "myField") { if (v.is_string()) { myField = v.as_string(); continue; } else { return false; } } }
代码量的差异很明显。我应该麻烦检查错误还是第一种方法就足够了?
【问题讨论】:
-
也许在处理之前用 json-schema 验证你的 json ?
-
你到底是什么意思?第一次使用 JSON。快速搜索只是将我指向几个在线验证器。
-
json 模式是描述预期 json 的一种方式:(应该具有字符串类型的字段“myField”,...)。所以你可以先处理来自模式的错误。如果架构没有错误,您可以避免一些错误检查。
标签: c++ json parsing cpprest-sdk