[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-serializatsiya-chem-otlichaetsya-jackson-ot-gson":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},982,"chem-otlichaetsya-jackson-ot-gson",30,"serializatsiya","Сериализация","📦","Чем отличается Jackson от Gson?","Jackson и Gson — две основные библиотеки для JSON-сериализации в Java. Обе решают одну задачу, но различаются производительностью, экосистемой и областью применения.\n\n### Сравнительная таблица\n\n| Критерий | Jackson | Gson |\n|----------|---------|------|\n| Разработчик | FasterXML (open-source) | Google |\n| Производительность | Быстрее (особенно Streaming API) | Медленнее на больших объёмах |\n| Размер библиотеки | Больше (модульная структура) | Компактная (~300 KB) |\n| Streaming API | `JsonParser` \u002F `JsonGenerator` | `JsonReader` \u002F `JsonWriter` |\n| Tree Model | `JsonNode` | `JsonElement` \u002F `JsonObject` |\n| Аннотации | Богатый набор (`@JsonProperty`, `@JsonCreator` и др.) | Минимальный (`@SerializedName`, `@Expose`) |\n| Модульная система | Да (JavaTimeModule, Kotlin и др.) | Нет |\n| Spring Boot | По умолчанию | Требует ручной настройки |\n| record (Java 16+) | Полная поддержка | Поддержка с 2.10+ |\n| Потокобезопасность | `ObjectMapper` переиспользуем | `Gson` переиспользуем |\n\n### Когда использовать Jackson\n\n- В любом Spring\u002FSpring Boot проекте — он уже подключён\n- При высоких требованиях к производительности на больших JSON\n- Когда нужен богатый набор аннотаций и модулей\n- В enterprise-проектах\n\n### Когда использовать Gson\n\n- В небольших утилитах, где важен минимальный размер зависимостей\n- В Android-проектах (хотя Moshi и kotlinx.serialization вытесняют Gson)\n- Когда нужна простая библиотека без сложной конфигурации\n\n\u003Cdetails>\n\u003Csummary>Пример: Jackson vs Gson\u003C\u002Fsummary>\n\n```java\n\u002F\u002F === Jackson ===\nObjectMapper jackson = new ObjectMapper();\nString jacksonJson = jackson.writeValueAsString(user);\nUser fromJackson = jackson.readValue(jacksonJson, User.class);\n\n\u002F\u002F Tree Model\nJsonNode node = jackson.readTree(jacksonJson);\nString name = node.get(\"name\").asText();\n\n\u002F\u002F === Gson ===\nGson gson = new Gson();\nString gsonJson = gson.toJson(user);\nUser fromGson = gson.fromJson(gsonJson, User.class);\n\n\u002F\u002F Tree Model\nJsonElement element = JsonParser.parseString(gsonJson);\nString name2 = element.getAsJsonObject().get(\"name\").getAsString();\n\n\u002F\u002F === Gson: кастомизация ===\nGson customGson = new GsonBuilder()\n    .setPrettyPrinting()\n    .setDateFormat(\"dd.MM.yyyy\")\n    .serializeNulls()\n    .excludeFieldsWithoutExposeAnnotation()\n    .registerTypeAdapter(Money.class, new MoneyTypeAdapter())\n    .create();\n```\n\n\u003C\u002Fdetails>\n\n### Частые ошибки\n\n- Смешивание аннотаций Jackson и Gson в одном проекте — они несовместимы\n- Использование Gson в Spring Boot — конфликт с Jackson, который уже в classpath\n- Предположение, что Gson быстрее из-за меньшего размера — Jackson быстрее в бенчмарках\n- Ручное построение JSON через конкатенацию строк вместо использования библиотеки\n\n> **На собеседовании:** кратко сравните по 3-4 критериям (производительность, экосистема, Spring Boot) и дайте рекомендацию: Jackson — стандарт для серверной Java, Gson — для простых случаев и legacy. В Kotlin-проектах всё чаще используется kotlinx.serialization.","","middle",[15],"serialization",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Чем отличается Jackson от Gson? — Gymterview","Jackson и Gson — две основные библиотеки для JSON-сериализации в Java. Обе решают одну задачу, но различаются производительностью, экосистемой и областью примен","Jackson и Gson — две основные библиотеки для JSON-сериализации в Java. Обе решают одну задачу, но различаются производит",[15,13],"Jackson и Gson — две основные библиотеки для JSON-сериализации в Java. Обе решают одну задачу, но различаются производительностью, экосистемой и областью применения.",true]