Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用JsonCpp解析字符串时使用SIGSEGV_C++_Jsoncpp - Fatal编程技术网

C++ 使用JsonCpp解析字符串时使用SIGSEGV

C++ 使用JsonCpp解析字符串时使用SIGSEGV,c++,jsoncpp,C++,Jsoncpp,我有一个序列化为JSON的任务: { text: "Some task", status: 1 } 我在序列化命名空间中使用此函数: Task parseTask(std::string task) { Json::Value root; Json::Reader reader; if(reader.parse(task, root, false)) { std::string text = root["text"].asString();

我有一个序列化为JSON的任务:

{
  text: "Some task",
  status: 1
}
我在
序列化
命名空间中使用此函数:

Task parseTask(std::string task) {
    Json::Value root;
    Json::Reader reader;

    if(reader.parse(task, root, false)) {
        std::string text = root["text"].asString();
        int status = root["status"].asInt();

        Task result(text);
        if(status == 1) result.setCompleted();
        return result;
    }
}
我按如下方式调用该函数:

Task t = Serialize::parseTask("{ text: \"Some Task\", status: 1 }");
并使用
-ljsoncpp
选项进行编译。然而,我得到:

terminated by signal SIGSEGV (Address boundary error)

我一直在浏览JsonCpp文档,但似乎找不到我的代码有什么问题。

我没有看过你的代码,但你的JSON无效。密钥名称必须用引号括起来。尝试:

Task t = Serialize::parseTask("{ \"text\": \"Some Task\", \"status\": 1 }");

这种错误通常是非常简单的,使用调试器进行回溯。您会考虑Qt中的JSON解析器吗?那是最快的。它甚至打败了著名的C json解析器!如果您愿意,我可以给您基准测试。GDB只抛出程序接收信号SIGSEGV,分段错误。0xb7e0e6f2英寸??()来自/lib/i386linux-gnu/i686/cmov/libc.so.6。信息量不大解析失败时不返回。使用此有效的JSON可以避免在解析发生时执行错误的代码(不返回),但代码仍然是错误的。