使用JsonCpp解析字符串时的SIGSEGV

时间:2013-09-07 20:21:32

标签: c++ jsoncpp

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

{
  text: "Some task",
  status: 1
}

我在Serialize命名空间中使用此函数:

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文档,但似乎无法找到我的代码的错误。

1 个答案:

答案 0 :(得分:0)

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

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