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

OSCHINA-MIRROR/huyistudio-SJson

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

Каковы намерения Sjon?

Сталкивались ли вы с ситуацией, когда данные, возвращаемые серверным интерфейсом, не являются фиксированными?

  // Это определение интерфейса:
  ArrayList<Student> students;
  int counts;

  // Вот как его сервер возвращает:
  {"students" :[], "counts":0}

  // А вот ещё один вариант ответа сервера:
  {"students" :"", "counts":""}

В таких случаях всегда ли невозможно использовать инструменты вроде Gson и FastJson? Потому что они выдают ошибку! CastClassException!

При столкновении с такой ситуацией вам хочется сказать только одно: WTF!

Какие функции есть у Sjon?

  • Преобразование строки JSON непосредственно в объект или массив Java с использованием отражения Java.
  • Избегание ошибок приведения типов, которые могут возникнуть при использовании инструментов вроде Gson.
  • Сравнение полей данных JSON с полями объектов Java.
    • Отображение различий между полями.
    • Использование разных цветов для обозначения различий.

Какие недостатки есть у Sjon?

  • Низкая производительность.
    • Используется отражение, что может замедлять работу, особенно при работе с большими объёмами данных.
    • Не так эффективен, как Gson (на системе Nexus4 5.1.1): Сравнение эффективности
      • После последней оптимизации прогресс есть, но всё ещё существует разрыв: Gson:Sjon = 3:10.
  • Недостаточная поддержка типов.
    • Поддерживает базовые типы данных, массивы и пользовательские объекты.
    • Не поддерживает Map, обобщённые типы и другие.
  • Плохой код.
    • Может быть неудобен для тех, кто хочет прочитать код, возможно.

Как использовать?

Преобразование JSON в объект

/**
 * Преобразование строки JSON в JavaBean
 **/
String jsonString = "{"this":"jsonObjectString"}";
JavaBean bean = Sjson.jsonToObject(jsonString, JavaBean.class);

/**
 * Преобразование JSONObject в JavaBean
 **/
JSONObject jsonObject = new JSONObject("{"this":"jsonObjectString"}");
JavaBean bean = Sjson.jsonToObject(jsonObject, JavaBean.class);

/**
 * Преобразование строки JSON в массив Java
 **/
String jsonString = "[{"this":"jsonObjectString"},{"this":"jsonObjectString"}]";
ArrayList<JavaBean> beanList = Sjson.jsonToArray(jsonString, JavaBean.class);

/**
 * Преобразование JSONArray в массив Java
 **/
JSONArray jsonArray = new JSONArray("[{"this":"jsonObjectString"},{"this":"jsonObjectString"}]");
ArrayList<JavaBean> beanList = Sjson.jsonToArray(jsonArray, JavaBean.class);

Включение печати различий между Java и JSON

Util.showDiff = true;

Пример вывода различий между Java и JSON

Key    JavaBean    Json     value
this                  jsonObjectString
that           ×       (Json Havn't)
they    ×              jsonObjectString
them    ×       ×       (Json Havn't)

Обратная связь

Если у вас возникли какие-либо проблемы при использовании, пожалуйста, свяжитесь со мной. Также буду рад услышать ваши идеи и предложения.

Об авторе

Мне нравится писать код, но я всегда пишу его плохо.

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

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

Введение

Реализовать операцию преобразования JSON в объект с помощью Java-отражения и встроенного JSON-парсера. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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