SIGSEGV 使用 JsonCpp 解析字符串时

SIGSEGV when parsing string with JsonCpp

本文关键字:字符串 使用 JsonCpp SIGSEGV      更新时间:2023-10-16

我有一个序列化为 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 文档,但似乎找不到我的代码有什么问题。

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

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