C++ Json cpp-如何从字符串初始化并获取字符串值?

C++ Json cpp-如何从字符串初始化并获取字符串值?,c++,json,jsoncpp,C++,Json,Jsoncpp,下面的代码崩溃(调试错误!R6010 abort()已被调用)。你能帮助我吗?我还想知道如何从字符串值初始化json对象 Json::Value obj; obj["test"] = 5; obj["testsd"] = 655; string c = obj.asString(); 您好,很简单: 1-您需要一个CPP JSON值对象(JSON::value)来存储数据 2-使用Json读取器(Json::Reader)读取Json字符串并解析为Json对象 3-做你的事:) 下面是执行这些

下面的代码崩溃(调试错误!R6010 abort()已被调用)。你能帮助我吗?我还想知道如何从字符串值初始化json对象

Json::Value obj;
obj["test"] = 5;
obj["testsd"] = 655;
string c = obj.asString();

您好,很简单:

1-您需要一个CPP JSON值对象(JSON::value)来存储数据

2-使用Json读取器(Json::Reader)读取Json字符串并解析为Json对象

3-做你的事:)

下面是执行这些步骤的简单代码:

#include <stdio.h>
#include <jsoncpp/json/json.h>
#include <jsoncpp/json/reader.h>
#include <jsoncpp/json/writer.h>
#include <jsoncpp/json/value.h>
#include <string>

int main( int argc, const char* argv[] )
{

    std::string strJson = "{\"mykey\" : \"myvalue\"}"; // need escape the quotes

    Json::Value root;   
    Json::Reader reader;
    bool parsingSuccessful = reader.parse( strJson.c_str(), root );     //parse process
    if ( !parsingSuccessful )
    {
        std::cout  << "Failed to parse"
               << reader.getFormattedErrorMessages();
        return 0;
    }
    std::cout << root.get("mykey", "A Default Value if not exists" ).asString() << std::endl;
    return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,const char*argv[]
{
std::string strJson=“{\“mykey\”:\“myvalue\”}”;//需要转义引号
Json::值根;
Json::阅读器;
bool parsingsuccesful=reader.parse(strJson.c_str(),root);//解析过程
如果(!parsingSuccessful)
{
std::cout使用,而不是:

std::string strJson=R“({“foo”:“bar”})”;
Json::CharReaderBuilder生成器;
Json::CharReader*reader=builder.newCharReader();
Json::Value-Json;
字符串错误;
bool parsingsuccesful=读取器->解析(
strJson.c_str(),
strJson.c_str()+strJson.size(),
&json,
&错误
);
删除阅读器;
如果(!parsingSuccessful){

STD::哇,这是C++上最好的快速入门,我已经看到了JSON。AWESMEMO谢谢,节省时间。用原始字符串(C++ 11),你可以使用<代码> Strjss= R”({“MyKyy”:“MyValue}}”)
.FWIW,您应该只需要包含一个
json.h
标题。json::Reader已被弃用。请改用CharReader和CharReaderBuilder。感谢此更新。简单的代码被弃用并被3倍复杂度所取代,这让我一直感到惊讶。干杯。文档链接已断开;现在位于:谢谢,@Technophile.I up答案的日期。
std::string strJson = R"({"foo": "bar"})";

Json::CharReaderBuilder builder;
Json::CharReader* reader = builder.newCharReader();

Json::Value json;
std::string errors;

bool parsingSuccessful = reader->parse(
    strJson.c_str(),
    strJson.c_str() + strJson.size(),
    &json,
    &errors
);
delete reader;

if (!parsingSuccessful) {
    std::cout << "Failed to parse the JSON, errors:" << std::endl;
    std::cout << errors << std::endl;
    return;
}

std::cout << json.get("foo", "default value").asString() << std::endl;