1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shadowyuan-karl

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Карл (https://github.com/shadow-yuan/karl)

Build status Coverity Scan Build Status Codacy Badge Language grade: C/C++

中文版

Простая в использовании библиотека JSON на C++.

Использование

Сборка

Существует несколько способов включить библиотеку Карл в свой проект.

CMake

Для сборки библиотеки Карл рекомендуется использовать CMake, для которого требуется версия 3.8 или выше. Необходимо поместить скомпилированный файл CMake в каталог, отличный от исходного файла, поэтому создайте каталог build и запустите CMake внутри него.

mkdir build
cd build
cmake ..

Если вы работаете на платформе Unix, вы можете выполнить компиляцию напрямую с помощью команды make:

make

Если вы используете Windows, вам нужно будет открыть файл решения karl.sln в Visual Studio и скомпилировать Карл. Рекомендуется использовать Visual Studio 2015 или Visual Studio 2017.

Makefile

Если у вас установлены gcc, gcc-c++, вы можете использовать Makefile для компиляции Карла:

Запустите эту команду в каталоге с исходным кодом, и она автоматически скомпилирует статическую библиотеку и пример программы.

make all

Копирование исходного кода

Просто скопируйте файлы src/cJSON.c/h, src/cbor.cc/h, src/karl.cc/h и каталог include в свой проект и начните его использовать.

Включение

Независимо от того, используете ли вы исходный код Карла напрямую или статическую библиотеку, необходимо скопировать каталог include в фиксированный каталог (каталог проекта, системный каталог или другое место), а затем указать каталог заголовочных файлов в Visual Studio или Makefile. Вы можете включить Карл следующим образом:

#include <karl/json.hxx>
using Json = karl::json;

Связывание библиотеки

Если вы находитесь на платформе Windows, добавьте в свойствах проекта, вы также можете использовать следующий код для связывания указанной библиотеки:

#pragma comment(lib, "karl.lib")

Если вы на платформе Unix. Вам нужно добавить соответствующий код в Makefile, указать местоположение библиотеки с -L и добавить -lkarl.

Меры предосторожности

  1. В отличие от других библиотек JSON, которые имеют такие объекты, как число, строка, массив или объект, библиотека Карл предоставляет только тип объекта — класс json. Это может быть число, строка или массив или объект.
  2. Не используйте ссылки на объекты JSON, потому что внутри библиотеки Карл используются интеллектуальные указатели для совместного использования исходного объекта, а обычные присваивания могут обеспечить ссылочные эффекты.
Json& j = js["xxx"];    // ошибка.
Json j = js["xxx"];     // верно, и модификация j повлияет на js.
  1. Если необходимо создать копию объекта JSON, используйте метод json.copy.
Json j = js.copy();
  1. Исключение (std::exception) генерируется, когда тип полученных данных неверен или запрошенные данные не существуют. Используйте try catch, чтобы перехватить исключения и обеспечить нормальный ход процесса.

Пример

Ниже приведён пример общего использования:

  1. Анализ строки JSON
char obj[] = "{\"one\":true, \"number\":[1, 2, 3, 4]}";
Json js = Json::parse(obj);

std::string s = "[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]";
Json j = Json::parse(s);
  1. Сериализация в объект std::string
std::string s = "[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]";
Json j = Json::parse(s);
std::string str = j.dump();
  1. Присвоение для создания объекта массива JSON
Json j;
j[1] = 2;
j[2] = "ss";
j[0] = 1;
``` 4. Создание объекта JSON:
```c
Json j;
j["one"] = false;
j["two"] = 2;
j["three"] = "hello world";
  1. Добавление элемента в массив JSON:
    Json j;
    j[1] = 2;
    j[0] = 1;
    Json jj;
    jj.push_back(j);
  1. Получение значения из объекта JSON:
    Json j;
    j["one"] = true;
    j["two"] = 2.0f;
    j["three"] = "hello world";
    bool one = j["one"].get<bool>();
    int two = j["two"].get<int>();
  1. Многоуровневое получение значения из объекта JSON:
    Json j = Json::parse("[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]");
    bool one = j[0]["one"].get<bool>();
    int two = j[0]["two"].get<int>();
  1. Итерация по объекту JSON:
    Json j = Json::parse("[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]");
    for (auto item : j) {
        std::cout << item.dump() << std::endl;
    }
  1. Создание объекта JSON с парой ключ-значение:
    Json j = { { "one", nullptr },{ "two", true },{ "three", 10086 },{ "str", "World" } };   
  1. Создание объекта JSON из вектора:
    std::vector<int> vec{ 1,2,3,4,5 };
    Json j = vec;

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Простая в использовании библиотека C++ JSON. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/shadowyuan-karl.git
git@gitlife.ru:oschina-mirror/shadowyuan-karl.git
oschina-mirror
shadowyuan-karl
shadowyuan-karl
master