JSONcpp - попытка десериализации в переменные - PullRequest
0 голосов
/ 07 мая 2020

Как десериализовать data значения?

{"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();
}

Я не могу десериализовать элемент данных Id, et c. Элементы free, line и count можно извлечь.

Я попытался создать второй класс для их разделения, но это тоже не сработало.

1 Ответ

0 голосов
/ 07 мая 2020

Элемент JSON data - это массив. Вы пропустили индекс его элемента, к которому хотите получить доступ.

На данный момент он имеет только один элемент, поэтому индекс будет 0, т.е. Data[0].

Пример:

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