0

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 のドキュメントを一掃してきましたが、コードの問題点を見つけることができないようです。

4

1 に答える 1

0

あなたのコードは見ていませんが、あなたの JSON は有効ではありません。キー名は引用符で囲む必要があります。試す:

Task t = Serialize::parseTask("{ \"text\": \"Some Task\", \"status\": 1 }");
于 2015-03-12T21:18:27.337 に答える