C++ JSONcpp-尝试反序列化为变量

C++ JSONcpp-尝试反序列化为变量,c++,json,deserialization,jsoncpp,C++,Json,Deserialization,Jsoncpp,如何反序列化数据值 {"data": [{ "Id": 3, "Name" : "Wind", "Type" : 2, "Order" : 1, "user" : "Mike" }], "free" : 0, "line" : 10, "count" : 1 } 以下是我迄今为止所尝试的: class Class { public: virtual

如何反序列化
数据

{"data": 
    [{
        "Id": 3, 
        "Name" : "Wind", 
        "Type" : 2, 
        "Order" : 1, 
        "user" : "Mike"
    }], 
    "free" : 0, 
    "line" : 10, 
    "count" : 1
}
以下是我迄今为止所尝试的:

class Class {
public: 
    virtual ~Class(void);
    virtual void Serialize(Json::Value& root); 
    virtual void Deserialize(Json::Value& root); 

    int Id;
    std::string free;
    std::string line;
    std::string count;
    std::vector<std::string> ID;

};

void Class::Serialize(Json::Value& root) {
    // ...
}

void Class::Deserialize(Json::Value& root) {

     free = root.get("top", 0).asInt();
     line = root.get("skip", 0).asInt();
     count = root.get("count", 0).asInt();

    Json::Value Data= root["data"];
    Id = Data.get("Id", 0).asInt();
}
类{
公众:
虚拟类(void);
虚拟空序列化(Json::Value和root);
虚拟void反序列化(Json::Value&root);
int-Id;
std::无字符串;
std::字符串行;
std::字符串计数;
std::向量ID;
};
void类::序列化(Json::值和根){
// ...
}
void类::反序列化(Json::值和根){
free=root.get(“top”,0).asInt();
line=root.get(“跳过”,0).asInt();
count=root.get(“count”,0).asInt();
Json::Value Data=root[“Data”];
Id=Data.get(“Id”,0).asInt();
}
我无法反序列化数据元素
Id
等。可以提取元素
自由
计数


我试图创建第二个类来分隔它们,但这也不起作用。

JSON元素
data
是一个数组。您缺少要访问的元素的索引

目前,它只有一个元素,因此索引为0,即
数据[0]

例如:

Id = Data[0].get("Id", 0).asInt();
         ^^^

为什么不能反序列化它?这将非常有趣。如果你能回答这个问题,你可以为你的问题问我们一个问题?编辑int-Ids=Data.get(“Id”,0).asInt()中的打字错误;那些int定义在类中。很抱歉。谢谢您的帮助,以前在某些方面尝试过数组索引,但它不起作用。@sam:不客气!如果这个答案解决了你的问题,请接受。谢谢