【问题标题】:Correct way to parse JSON values vie cpprestsdk通过 cpprestsdk 解析 JSON 值的正确方法
【发布时间】: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


【解决方案1】:

这个问题可能最适合https://codereview.stackexchange.com/,但如果您需要优雅地处理错误,您应该更喜欢具有强大错误处理能力的代码。

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多