跳转至

ev-json-optional-from-json-002

字段 值
项目 nlohmann/json
固定 commit 55f93686c015
路径 include/nlohmann/detail/conversions/from_json.hpp
行段 L49-L62
特性 std::optional
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-24
测试代码 否
发现方式 regex

用法

JSON null 映射为 nullopt,其他值 emplace

为什么典型

反序列化时把 JSON 的空值与 C++ 的可选状态一一对应,调用方无需额外哨兵值。

摘录

#ifdef JSON_HAS_CPP_17
#ifndef JSON_USE_IMPLICIT_CONVERSIONS
template<typename BasicJsonType, typename T>
void from_json(const BasicJsonType& j, std::optional<T>& opt)
{
    if (j.is_null())
    {
        opt = std::nullopt;
    }
    else
    {
        opt.emplace(j.template get<T>());
    }
}

备注

生产路径;仅在未启用隐式转换时启用。

查看固定 commit 源码 · 返回证据索引