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

OSCHINA-MIRROR/troyzhxu-xjsonkit

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

xJsonKit

Сверхлёгкий фреймворк для сериализации и десериализации JSON, JSONB, XML и YAML.

Введение

xJsonKit — это сверхлёгкий фреймворк, который предоставляет фасадные API для сериализации и десериализации данных в форматах JSON, JSONB, XML и YAML. Он позволяет отделить бизнес-код от конкретной реализации и обеспечивает гибкость при выборе библиотеки для работы с данными.

Установка

Для использования xJsonKit необходимо добавить зависимости в файл сборки проекта (например, build.gradle).

API-зависимость:

implementation 'cn.zhxu:xjsonkit-api:1.5.0'

Эта зависимость предоставляет четыре инструментальных класса: JsonKit, JsonbKit, XmlKit и YamlKit. Они предоставляют API для операций сериализации и десериализации для соответствующих форматов данных.

Зависимости для конкретных реализаций:

JSON:

// Fastjson 实现
implementation 'cn.zhxu:xjsonkit-fastjson:1.5.0'
// Fastjson2 实现
implementation 'cn.zhxu:xjsonkit-fastjson2:1.5.0'
// Gson 实现
implementation 'cn.zhxu:xjsonkit-gson:1.5.0'
// Jackson 实现
implementation 'cn.zhxu:xjsonkit-jackson:1.5.0'
// Snack3 实现
implementation 'cn.zhxu:xjsonkit-snack3:1.5.0'

JSONB:

// Fastjson2-JSONB 实现
implementation 'cn.zhxu:xjsonkit-fastjson2-jsonb:1.5.0'

XML:

// Jackson Xml
implementation 'cn.zhxu:xjsonkit-jackson-xml:1.5.0'

YAML:

// Jackson Yaml
implementation 'cn.zhxu:xjsonkit-jackson-yaml:1.5.0'

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

Фреймворк xJsonKit предоставляет четыре инструментальных класса для работы с данными: JsonKit, JsonbKit, XmlKit и YamlKit. В этом разделе будет рассмотрен пример использования класса JsonKit. Другие классы используются аналогичным образом.

Десериализация в Mapper:

String json = "{\"name\":\"Jack\",\"age\":20}";
// Преобразование в объект Mapper
Mapper mapper = JsonKit.toMapper(json);

// Размер первого уровня ключей
int size = mapper.size(); // 2
// Набор ключей первого уровня
Set<String> keys = mapper.keySet(); // ["name", "age"]
// Доступ к свойству String по ключу
String name = mapper.getString("name"); // Jack
// Доступ к int-свойству по ключу
int age = mapper.getInt("age"); // 20

// Итерация по объекту Mapper
mapper.forEach((key, data) -> {
    System.out.println(key); // Последовательно выводит name и age
    System.out.println(data); // Последовательно выводит Jack и 20
});

System.out.println(mapper); // Выводит {"name":"Jack","age":20}
System.out.println(mapper.toPretty()); // Форматированный вывод

Десериализация в массив:

String json = "[20,{\"name\":\"Jack\"},\"JsonKit\"]";
// Преобразование в массив Array
Array array = JsonKit.toArray(json);

// Размер массива
int size = array.size(); // 3
// Получение int-данных по индексу
int value = array.getInt(0); // 20
// Получение объекта Mapper по индексу
Mapper mapper = array.getMapper(1); // {"name":"Jack"}
// Получение строки по индексу
String string = array.getString(2); // JsonKit

// Итерация по массиву
array.forEach(((index, data) -> {
    System.out.println(index); // Последовательно выводит 0, 1 и 2
    System.out.println(data); // Последовательно выводит 20, {"name":"Jack"} и JsonKit
}));

System.out.println(array); // Выводит [20,{"name":"Jack"},"JsonKit"]
System.out.println(array.toPretty()); // Форматированный вывод

Десериализация в Java Bean:

String json = "{\"name\":\"Jack\",\"age\":20}";
// Десериализация согласно типу в Java Bean
User user = JsonKit.toBean(User.class, json);

String name = user.getName(); // Jack
int age = user.getAge(); // 20

Десериализация в список:

String json = "[{\"name\":\"Jack\",\"age\":20}, {\"name\":\"Tom\",\"age\":21}]";
// Десериализация согласно типу в List
List<User> list = JsonKit.toList(User.class, json);

int size = list.size(); // 2
User user1 = list.get(0); // {"name":"Jack","age":20}
User user2 = list.get(1); // {"name":"Tom","age":21}

Сериализация в JSON:

User user = new User();
user.setName("Jack");
user.setAge(20);

String json = JsonKit.toJson(user); // Преобразование в строку JSON
System.out.println(json); // Выводит {"age":20,"name":"Jack"}

String pretty = JsonKit.toPretty(user); // Форматированная строка JSON
String pretty = JsonKit.toJson(user, true);

Преобразование форматов:

  • JSON-объект в XML, YAML, JSONB. JSON массив в XML, YAML, JSONB
var json = "[{\"id\":1,\"name\":\"Jack\"},{\"id\":2,\"name\":\"Tom\"}]";
// в XML
var xml = XmlKit.toXml(JsonKit.toArray(json));
// в YAML
var yaml = XmlKit.toYaml(JsonKit.toArray(json));
// в JSONB
var jsonb = JsonbKit.toBytes(JsonKit.toArray(json));

XML объект в JSON, YAML, JSONB

var xml = "<root><id>1</id><name>Jack</name><age>20</age></root>";
// в JSON
var json = JsonKit.toJson(XmlKit.toMapper(xml));
// в YAML
var yaml = XmlKit.toYaml(XmlKit.toMapper(xml));
// в JSONB
var jsonb = JsonbKit.toBytes(XmlKit.toMapper(xml));

XML массив в JSON, YAML, JSONB

var xml = "<list><item><id>1</id><name>Jack</name></item><item><id>2</id><name>Tom</name></item></list>";
// в JSON
var json = JsonKit.toJson(XmlKit.toArray(xml));
// в YAML
var yaml = XmlKit.toYaml(XmlKit.toArray(xml));
// в JSONB
var jsonb = JsonbKit.toBytes(XmlKit.toArray(xml));

И так далее (преобразование YAML и JSONB в другие форматы аналогично).

Конфигурация

Если вы уже добавили базовый пакет реализации, такой как xjsonkit-jackson, то вы можете использовать его без дополнительной настройки.

Но если вам нужна специальная настройка, например, при использовании Jackson, вы можете выполнить следующую настройку:

ObjectMapper objectMapper = new ObjectMapper();
// TODO: настроить ObjectMapper...

// Настроить JsonKit
Config.json(new JacksonDataConvertor(ObjectMapper));

Здесь Config — это класс конфигурации в пакете cn.zhxu.xjson.spi, который содержит четыре метода конфигурации: json(), jsonb(), xml() и yaml(), которые применяются к четырём инструментальным классам: JsonKit, JsonbKit, XmlKit и YamlKit.

Пользовательская базовая реализация

Просто реализуйте интерфейс DataConvertor:

// Пользовательская реализация JSON
Config.json(new MyJsonDataConvertor());
// Пользовательская реализация JSONB
Config.jsonb(new MyJsonbDataConvertor());
// Пользовательская реализация XML
Config.xml(new MyXmlDataConvertor());
// Пользовательская реализация YAML
Config.yaml(new MyYamlDataConvertor());

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

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

Введение

Сверхлёгкий API для разбора JSON / JSONB / XML / YAML, простой в использовании, который позволяет бизнес-коду не зависеть от конкретной реализации, инструмент развязки! Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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