YouTip LogoYouTip

Java Jackson Lib

[![Image 1: Java Common Class Libraries](#) Java Common Class Libraries](#)\\n\\n* * *\\n\\nJackson is a high-performance JSON processing library for Java, which can:\\n\\n* Serialize Java objects to JSON format (Object β†’ JSON)\\n* Deserialize JSON to Java objects (JSON β†’ Object)\\n\\nJackson is one of the most popular JSON processing libraries in the Java ecosystem due to its speed, powerful features, and ease of use.\\n\\n### Jackson Core Modules\\n\\n* 1. Jackson Core: The core module of Jackson, providing basic JSON parsing and generation functionality.\\n* 2. Jackson Annotations: Contains various annotations for controlling serialization and deserialization process.\\n* 3. Jackson Databind: Provides data binding functionality, enabling conversion between Java objects and JSON.\\n\\n* * *\\n\\n## Basic Usage\\n\\n### Add Dependency\\n\\nFirst, you need to add Jackson dependency to your project (using Maven as an example):\\n\\ncom.fasterxml.jackson.core\\n\\njackson-databind\\n\\n2.13.0\\n\\nA simple example, converting between Java and JSON objects:\\n\\n## Example\\n\\nimport com.fasterxml.jackson.databind.ObjectMapper;\\n\\npublic class JacksonDemo {\\n\\npublic static void main(String[] args)throws Exception{\\n\\n ObjectMapper mapper =new ObjectMapper();\\n\\n// JavaConvert Object to JSON\\n\\n Person person =new Person("Zhang San", 30);\\n\\nString json = mapper.writeValueAsString(person);\\n\\nSystem.out.println(json);\\n\\n// JSONConvert to Java object\\n\\n Person parsedPerson = mapper.readValue(json, Person.class);\\n\\nSystem.out.println(parsedPerson);\\n\\n}\\n\\n}\\n\\nclass Person {\\n\\nprivate String name;\\n\\nprivate int age;\\n\\n// Must have a no-argument constructor\\n\\npublic Person(){}\\n\\npublic Person(String name, int age){\\n\\nthis.name= name;\\n\\nthis.age= age;\\n\\n}\\n\\n// Must have getters and setters\\n\\n// Omit getter/setter and toString methods\\n\\n}\\n\\n### Create ObjectMapper\\n\\n`ObjectMapper` is the core class of Jackson, responsible for serialization and deserialization:\\n\\nObjectMapper mapper = new ObjectMapper();\\n\\n* * *\\n\\n## JSON Serialization (Object β†’ JSON)\\n\\n### Simple Example\\n\\n## Example\\n\\npublic class Person {\\n\\nprivate String name;\\n\\nprivate int age;\\n\\n// Omit constructor, getters and setters\\n\\n}\\n\\nPerson person =new Person("Zhang San", 25);\\n\\nString json = mapper.writeValueAsString(person);\\n\\nSystem.out.println(json);\\n\\n// Output: {"name":"Zhang San","age":25}\\n\\n### Formatted Output\\n\\n## Example\\n\\nString prettyJson = mapper.writerWithDefaultPrettyPrinter()\\n\\n.writeValueAsString(person);\\n\\nSystem.out.println(prettyJson);\\n\\n/*\\n\\n Output:\\n\\n {\\n\\n "name" : "Zhang San",\\n\\n "age" : 25\\n\\n }\\n\\n */\\n\\n* * *\\n\\n## JSON Deserialization (JSON β†’ Object)\\n\\n### Simple Example\\n\\n## Example\\n\\nString json ="{"name":"Li Si","age":30}";\\n\\n Person person = mapper.readValue(json, Person.class);\\n\\nSystem.out.println(person.getName());// Output: Li Si\\n\\n### Read from File\\n\\nPerson person = mapper.readValue(new File("person.json"), Person.class);\\n\\n* * *\\n\\n## Common Annotations\\n\\nJackson provides various annotations to control serialization and deserialization:\\n\\n### @JsonProperty\\n\\nSpecify JSON property name:\\n\\n@JsonProperty("user_name")private String name;\\n### @JsonIgnore\\n\\nIgnore a field:\\n\\n@JsonIgnoreprivate String password;\\n### @JsonFormat\\n\\nFormat date:\\n\\n@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")private Date birthDate;\\n\\n* * *\\n\\n## Handling Complex Types\\n\\n### Collection Types\\n\\n## Example\\n\\nList people =Arrays.asList(\\n\\nnew Person("Wang Wu", 28),\\n\\nnew Person("Zhao Liu", 32)\\n\\n);\\n\\nString json = mapper.writeValueAsString(people);\\n\\n// Output: [{"name":"Wang Wu","age":28},{"name":"Zhao Liu","age":32}]\\n\\n### Map Types\\n\\n## Example\\n\\nMap data =new HashMap();\\n\\n data.put("name", "Zhang San");\\n\\n data.put("age", 25);\\n\\n data.put("isStudent", true);\\n\\nString json = mapper.writeValueAsString(data);\\n\\n// Output: {"name":"Zhang San","age":25,"isStudent":true}\\n\\n* * *\\n\\n## Advanced Features\\n\\n### Custom Serialization/Deserialization\\n\\nYou can implement custom serialization and deserialization logic by extending `JsonSerializer` and `JsonDeserializer`.\\n\\n### Polymorphic Type Handling\\n\\nUse `@JsonTypeInfo` and `@JsonSubTypes` annotations to handle inheritance and polymorphism.\\n\\n### Tree Model\\n\\nJackson provides a tree model API for directly manipulating JSON nodes:\\n\\n## Example\\n\\nJsonNode rootNode = mapper.readTree(json);\\n\\nString name = rootNode.get("name").asText();\\n\\nint age = rootNode.get("age").asInt();\\n\\n* * *\\n\\n## Best Practices\\n\\n1. **Reuse ObjectMapper**: Creating `ObjectMapper` instances is expensive, reuse the same instance\\n2. **Handle Exceptions**: Always handle `JsonProcessingException` and `IOException`\\n3. **Use DTO Pattern**: Don't serialize domain models directly, use dedicated Data Transfer Objects (DTO)\\n4. **Consider Performance**: For high-performance scenarios, use `JsonFactory` for low-level operations\\n\\n* * *\\n\\n## Summary\\n\\nJackson is a powerful tool for JSON processing in Java, providing:\\n\\n* Simple and easy-to-use API\\n* High-performance JSON processing capabilities\\n* Rich customization options\\n* Good community support\\n\\nMastering Jackson can greatly improve the efficiency and flexibility of handling JSON data in Java development.\\n\\n[![Image 2: Java Common Class Libraries](#) Java Common Class Libraries](#)
← Java Junit LibJava Url Class β†’