原文地址:
Create JSON by Jackson API
Jackson API is a multi-purpose Java library for processing JSON. Using Jackson API we can process as well produce JSON in different ways. In this article we will show how to use this Jackson API for creating JSON.
Maven Dependency:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version> </dependency>
Example 1:Jackson API to create JSON Array
package com.sample; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; public class CreateJSON { public static void main(String[] args) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); ArrayNode arrayNode = mapper.createArrayNode(); /** * Create three JSON Objects objectNode1, objectNode2, objectNode3 * Add all these three objects in the array */ ObjectNode objectNode1 = mapper.createObjectNode(); objectNode1.put("bookName", "Java"); objectNode1.put("price", "100"); ObjectNode objectNode2 = mapper.createObjectNode(); objectNode2.put("bookName", "Spring"); objectNode2.put("price", "200"); ObjectNode objectNode3 = mapper.createObjectNode(); objectNode3.put("bookName", "Liferay"); objectNode3.put("price", "500"); /** * Array contains JSON Objects */ arrayNode.add(objectNode1); arrayNode.add(objectNode2); arrayNode.add(objectNode3); /** * We can directly write the JSON in the console. * But it wont be pretty JSON String */ System.out.println(arrayNode.toString()); /** * To make the JSON String pretty use the below code */ System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode)); } }
The above code will produce the below JSON
[ { "bookName": "Java", "price": "100" }, { "bookName": "Spring", "price": "200" }, { "bookName": "Liferay", "price": "500" } ]
Example 2: Jackson API to create JSON Array inside JSON Array
package com.sample; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; public class CreateJSON { public static void main(String[] args) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); ArrayNode arrayNode = mapper.createArrayNode(); /** * Create three JSON Objects objectNode1, objectNode2, objectNode3, objectNode4 * Add all these three objects in the array */ ObjectNode objectNode1 = mapper.createObjectNode(); objectNode1.put("bookName", "Java"); objectNode1.put("price", "100"); ObjectNode objectNode2 = mapper.createObjectNode(); objectNode2.put("bookName", "Spring"); objectNode2.put("price", "200"); ObjectNode objectNode3 = mapper.createObjectNode(); objectNode3.put("bookName", "Liferay"); objectNode3.put("price", "500"); ArrayNode authorsArray = mapper.createArrayNode(); ObjectNode author1 = mapper.createObjectNode(); author1.put("firstName","Hamidul"); author1.put("middleName",""); author1.put("lastName","Islam"); ObjectNode author2 = mapper.createObjectNode(); author2.put("firstName","Richard"); author2.put("middleName",""); author2.put("lastName","Sezove"); authorsArray.add(author1); authorsArray.add(author2); ObjectNode objectNode4 = mapper.createObjectNode(); objectNode4.putPOJO("authors", authorsArray); /** * Array contains JSON Objects */ arrayNode.add(objectNode1); arrayNode.add(objectNode2); arrayNode.add(objectNode3); arrayNode.add(objectNode4); /** * We can directly write the JSON in the console. * But it wont be pretty JSON String */ //System.out.println(arrayNode.toString()); /** * To make the JSON String pretty use the below code */ System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(arrayNode)); } }
The above code will produce the below JSON String
[ { "bookName": "Java", "price": "100" }, { "bookName": "Spring", "price": "200" }, { "bookName": "Liferay", "price": "500" }, { "authors": [ { "firstName": "Hamidul", "middleName": "", "lastName": "Islam" }, { "firstName": "Richard", "middleName": "", "lastName": "Sezove" } ] } ]
Example 3: Jackson API to convert Java Object to JSON
package com.sample.pojo; import java.util.List; public class Customer { private String firstName; private String middleName; private String lastName; private int age; private List<String> contacts; public List<String> getContacts() { return contacts; } public void setContacts(List<String> contacts) { this.contacts = contacts; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Convert Customer to JSON
package com.sample; import java.io.File; import java.io.IOException; import java.util.Arrays; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.sample.pojo.Customer; public class ObjectToJSON { public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException { /** * Mapper can be used to convert object to JSON */ ObjectMapper mapper = new ObjectMapper(); Customer customer = new Customer(); customer.setAge(29); customer.setFirstName("Hamidul"); customer.setMiddleName(""); customer.setLastName("Islam"); customer.setContacts( Arrays.asList("8095185442", "9998887654", "1234567890")); /** * Now we can create JSON from customer object * Into different forms * We can write in Console or we can create JSON as string * Or we can write JSON in file also * See all the examples below */ mapper.writeValue(System.out, customer); String jsonString = mapper.writeValueAsString(customer); mapper.writeValue(new File("customer.json"), customer); /** * To pretty print the above JSON use the below code. * Uncomment the below code to see the result */ /**mapper.writerWithDefaultPrettyPrinter().writeValue(System.out, customer); String prettyJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); mapper.writerWithDefaultPrettyPrinter().writeValue(new File("customer.json"), customer);*/ } }
The above code will produce JSON as below
{ "firstName": "Hamidul", "middleName": "", "lastName": "Islam", "age": 29, "contacts": [ "8095185442", "9998887654", "1234567890" ] }
Example 4: Use of @JsonIgnore to ignore property
Some times while converting java objects to json we may require certain properties to be ignored.
In that case we can use @JsonIgnore annotation. For example
package com.sample.pojo; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnore; public class Customer { private String firstName; private String middleName; private String lastName; private int age; private List<String> contacts; @JsonIgnore private String country; @JsonIgnore private String city; public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public List<String> getContacts() { return contacts; } public void setContacts(List<String> contacts) { this.contacts = contacts; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
So while converting customer object to JSON, the property country and city will be ignored.
Example 5: Ignore property in the runtime
In the example 4 we have shown how to ignore property by @JsonIgnore. This is static in nature. That means each and every time the property will be ignored while converting object to JSON. But in some cases we may need to ignore property in the runtime on the basis of some conditions.
package com.sample.pojo; import java.util.List; import com.fasterxml.jackson.annotation.JsonFilter; @JsonFilter("com.sample.pojo.Customer") public class Customer { private String firstName; private String middleName; private String lastName; private int age; private List<String> contacts; private String country; private String city; public List<String> getContacts() { return contacts; } public void setContacts(List<String> contacts) { this.contacts = contacts; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Customer(String firstName, String middleName, String lastName, int age) { super(); this.firstName = firstName; this.middleName = middleName; this.lastName = lastName; this.age = age; } public Customer() { } }
Note: Give attention to @JsonFilter("com.sample.pojo.Customer"). Within double quote we can pass any valid string.
package com.sample; import java.util.Arrays; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.ser.FilterProvider; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; import com.sample.pojo.Customer; public class DynamicExclusionDemo { public static void main(String[] args) throws JsonProcessingException{ /** * Create customer object */ Customer customer = new Customer(); customer.setAge(29); customer.setFirstName("Hamidul"); customer.setMiddleName(""); customer.setLastName("Islam"); customer.setCountry("India"); customer.setCity("Bangalore"); customer.setContacts( Arrays.asList("8095185442", "9998887654", "1234567890")); /** * Ignore city and country property */ String[] ignorableFieldNames = {"city","country"}; /** * In the add filter pass com.sample.pojo.Customer * Which is mentioned in the Customer class with @JsonFilter */ FilterProvider filters = new SimpleFilterProvider() .addFilter("com.sample.pojo.Customer", SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames)); ObjectMapper mapper = new ObjectMapper(); /** * Pass the filter */ ObjectWriter writer = mapper.writer(filters); /** * Convert Object to JSON */ String jsonString = writer.writeValueAsString(customer); System.out.println(jsonString); } }
The JSON output is below
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
2015-05-28 OAF开发中一些LOV相关技巧 (转)
2015-05-28 Oracle OAF 应用构建基础之实现控制器 (转)
2015-05-28 oaf 动态创建table vo (转)
2015-05-28 OAF 动态创建组件以及动态绑定属性