Карл: простая в использовании C++ JSON-библиотека
Использование
Компиляция
CMake. Рекомендуется использовать CMake для сборки библиотеки Карл, требуется версия CMake 3.8 или выше. Необходимо поместить файлы после компиляции CMake в каталог, отличный от каталога исходных файлов, поэтому создайте каталог build
и запустите CMake внутри него.
mkdir build
cd build
cmake ..
Если вы работаете на платформе Unix, вы можете скомпилировать напрямую с помощью команды make
.
make
Если вы используете Windows, вам нужно будет открыть решение Visual Studio karl.sln
и скомпилировать Карл. Рекомендуется использовать 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
.
Примечание
number
, string
, array
или object
, библиотека Карл предоставляет только один тип объекта — json
. Это может быть number
, string
, arry
или object
в зависимости от ситуации. Json& j = js["xxx"]; // Ошибка.
Json j = js["xxx"]; // Правильно, и изменения в j повлияют на js.
json.copy
.
Json j = js.copy(); // Правильно, изменения в j не повлияют на js.
std::exception
). Используйте try catch
, чтобы перехватить исключение и обеспечить нормальное выполнение процесса.Примеры
Вот примеры типичного использования:
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);
std::string s = "[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]";
Json j = Json::parse(s);
std::string str = j.dump();
Json j;
j[1] = 2;
j[2] = "ss";
j[0] = 1;
Json j;
j["one"] = false;
j["two"] = 2;
j["three"] = "hello world";
Json j;
j[1] = 2;
j[0] = 1;
Json jj;
jj.push_back(j);
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>();
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>();
Json j = Json::parse("[{\"one\":true,\"two\":2,\"three\":\"hello world\"}]");
for (auto item : j) {
std::cout << item.dump() << std::endl;
}
Json j = { { "one", nullptr },{ "two", true },{ "three", 10086 },{ "str", "World" } };
std::vector<int> vec{ 1,2,3,4,5 };
Json j = vec;
Более подробные примеры кода можно найти в example/main.cc
.
Другое
В процессе разработки я пошёл на некоторые компромиссы в отношении некоторых деталей и функций, но это не повлияет на удобство использования Карла. В коде также могут быть проблемы, которые ещё не были обнаружены, если у вас есть какие-либо вопросы, пожалуйста, свяжитесь со мной (shadow_yuan@qq.com).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )