6

我有一个字符串,我想将其解析为 json,但_json似乎并非每次都有效。

#include <nlohmann/json.hpp>
#include <iostream>

using nlohmann::json;

int main()
{
    // Works as expected
    json first = "[\"nlohmann\", \"json\"]"_json;
    // Doesn't work
    std::string s = "[\"nlohmann\", \"json\"]"_json;
    json second = s;
}

第一部分有效,第二部分投掷terminate called after throwing an instance of 'nlohmann::detail::type_error' what(): [json.exception.type_error.302] type must be string, but is array

4

1 回答 1

7

添加_json到字符串文字会指示编译器将其解释为 JSON 文字。

显然,JSON 对象可以等于 JSON 值,但字符串不能。

在这种情况下,您必须_json从文字中删除,但这会使second字符串值隐藏在 JSON 对象中。

所以,你也使用json::parse,像这样:

std::string s = "[\"nlohmann\", \"json\"]";
json second = json::parse(s);

如何从字符串创建 JSON 对象。

于 2018-04-24T23:32:19.893 回答