Чтение файла в jsoncpp
Проблема в следующем, есть файл test.json
{"ts":1659835624,"updates":[[61,200378273,1],[4,70,17,200378273,1593455637," ... ","test"]]}
Как можно прочитать только одну из частей updates?
Пытался как-то так сделать, но читает все сразу.
#include "json/json.h"
#include <iostream>
#include <fstream>
int main() {
Json::Value aaaa;
std::ifstream file("c:/test.json", std::ifstream::binary);
file >> aaaa;
std::cout << aaaa["updates"];
}
Ответы (1 шт):
Автор решения: isnullxbh
→ Ссылка
Например, так:
#include <iostream>
#include <json/json.h>
int main() {
std::istringstream stream { R"({ "updates" : [[1,2], [3,4]] })" };
Json::Value json;
stream >> json;
for (const auto& u : json["updates"])
{
std::cout << u << std::endl;
}
return 0;
}
У класса Json::Value перегружен subscript оператор ([...]), что позволяет:
- Получить доступ к объекту по ключу
Пример:json["updates"] -> [[1,2], [3,4]] - Получить доступ к элементу массива по индексу
Пример:json["updates"][0] -> [1,2]
Так же Вы можете использовать range-based for loop (используется в примере):
for (const auto& u : json["updates"])
{
std::cout << u << std::endl;
}
Или "традиционный" index loop:
for (auto i = 0U; i < json["updates"].size(); ++i)
{
std::cout << json["updates"][i] << std::endl;
}
Чтобы проверить, являет ли Json-value массивом, вызовите метод isArray().