Подтвердить что ты не робот

JSONCPP Запись в файлы

JSONCPP имеет автора, но все, что ему кажется, это получить информацию от синтаксического анализатора, а затем вывести его в строку или поток. Как мне изменить или создать новые объекты, массивы, значения, строки и т.д. И записать их в файл?

4b9b3361

Ответ 1

#include<json/writer.h>

код:

    Json::Value event;   
    Json::Value vec(Json::arrayValue);
    vec.append(Json::Value(1));
    vec.append(Json::Value(2));
    vec.append(Json::Value(3));

    event["competitors"]["home"]["name"] = "Liverpool";
    event["competitors"]["away"]["code"] = 89223;
    event["competitors"]["away"]["name"] = "Aston Villa";
    event["competitors"]["away"]["code"]=vec;

    std::cout << event << std::endl;

Вывод:

{
        "competitors" : 
        {
                "away" : 
                {
                        "code" : [ 1, 2, 3 ],
                        "name" : "Aston Villa"
                },
                "home" : 
                {
                        "name" : "Liverpool"
                }
        }
}

Ответ 2

AFAICT вы создаете объекты типа Json:: Value, которые обслуживают все типы данных JSON, и передают результат в Json:: Writer (один из его производных типов, если быть конкретным), или просто поток.

Например: для записи массива из трех целых чисел в файл:

Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;

Ответ 3

#include <json.h>
#include <iostream>
#include <fstream>

void main()
{
    std::ofstream file_id;
    op_file_id.open("file.txt");

    Json::Value value_obj;
    //populate 'value_obj' with the objects, arrays etc.

    Json::StyledWriter styledWriter;
    file_id << styledWriter.write(value_obj);

    file_id.close();
}

Ответ 4

Сначала вы должны создать желаемый JSON::Value. Вы должны посмотреть на все конструкторы (сначала). Чтобы создать необходимые иерархии, см. append и перегрузка оператора []; есть перегрузки для массива индексы и строковые ключи для объектов.

Один из способов записать значение JSON обратно: StyledStreamWriter::write и ofstream.

См. ответ cegprakash для написания.