原文地址:

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

Create JSON by Jackson API(转)的更多相关文章

  1. URL及日期等特殊数据格式处理-JSON框架Jackson精解第2篇

    Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...

  2. 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

    本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...

  3. 属性序列化自定义与字母表排序-JSON框架Jackson精解第3篇

    Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...

  4. @JsonCreator自定义反序列化函数-JSON框架Jackson精解第5篇

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  5. 使用 Json Schema 定义 API

    本文地址:使用 Json Schema 定义 API 前面我们介绍了 Json Schema 的基本内容,这篇文章我们结合 jsonschema2pojo 工具深入分析如何使用 Json Schema ...

  6. RandomUser – 生成随机用户 JSON 数据的 API

    RandomUser 是一个 API,它为您提供了一个或者一批随机生成的用户.这些用户可以在 Web 应用程序原型中用作占位符,将节省您创建自己的占位符信息的时间.您可以使用 AJAX 或其他方法来调 ...

  7. Json for Java API学习

    首先声明:本文来个非常多网友的博客,我通过參考了他们的博客,大致的了解了一些项目中经常使用的Json in java 类和方法,以及关于json的个人理解 个人对json的一些简单理解 在近期的学习中 ...

  8. json模块及其API

    模块:json 所包含API列表: json.dumps : 将python对象转换成json格式 json.loads : 将json格式字符串转换为python对象 ——————————————— ...

  9. [py]requests+json模块处理api数据,flask前台展示

    需要处理接口json数据,过滤字段,处理字段等. 一大波json数据来了 参考: https://stedolan.github.io/jq/tutorial/ https://api.github. ...

随机推荐

  1. 洛谷P1803 凌乱的yyy dp

    我要日更嘤嘤嘤>_< 原题戳>>https://www.luogu.org/problem/show?pid=1803<<(其实是戳不动的,复制粘贴吧) 题目背景 ...

  2. VHDL 乐曲演奏电路设计

    前言 无源蜂鸣器在直流信号下不会响,需要方波驱动.输入不同频率的方波会发出不同音调的声音,方波的幅值决定了声音的响度. 目标 乐曲发生电路在节拍(4Hz)的控制下根据乐谱产生合适的分频系数.分频器根据 ...

  3. 使用 jenkins 搭建CI/CD流水线 (MAC)

    如何搭建持续集成/持续交付平台?? 如何使用jenkins搭建持续交付流水线,以及和其他工具(如artifactory)集成?如何使用元数据,记录软件发布过程的构建信息,测试结果,并用rest Api ...

  4. Intent 类型

    Intent 分为两种类型: 显式 Intent:按名称(完全限定类名)指定要启动的组件. 通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务 ...

  5. rostopic demo

    发布者 #!/usr/bin/env python2. # -*- coding: utf- -*- import rospy from hdw_driver.msg import update_fi ...

  6. ArrayList的详解

    数组一旦给定大小就是固定的,只能放同类型的不能再改,还有一种高级的可扩充的,就是arrayList类,被称作动态数组或者集合. 使用步骤: 1. 引用命名空间system.collections: 2 ...

  7. Jmeter 如何引入外部jar 包

    最近使用Jmeter 测试需要引入Jar包,之前也遇到过,用过两种方式,各有利弊,今天又接触了一种方式,挺好,在此做一总结. 方法一:测试计划 通过 Add directory or jar to c ...

  8. 第 8 章 容器网络 - 060 - 在 Docker 中使用 flannel

    在 Docker 中使用 flannel 编辑 host1 的 Docker 配置文件 /etc/systemd/system/docker.service.d/10-machine.conf 设置 ...

  9. (转)stm32启动文件详解

    在<<STM32不完全手册里面>>,用的是STM32F103RBT6,所有的例程都采用了一个叫STM32F10x.s的启动文件,里面定义了STM32的堆栈大小以及各种中断的名字 ...

  10. MyBatis-session-SqlSession

    The SqlSession instance is the most powerful in MyBatis. It is where you'll find all of the methods ...