在本教程中,我们将学习使用将JSON转换为Java对象 – 并将Java对象转换为JSON 。
1. Jackson 2 maven dependency
要将Jackson 2库包含在您的项目中,请在pom.xml中包含以下依赖项。
com.fasterxml.jackson.core
jackson-core
2.6.4
您可以从maven site找到可下载的jar文件。
2. Convert Java object to JSON example
在简单的pojo对象之间进行转换时,Jackson非常直接。 通常只涉及两个步骤,创建com.fasterxml.jackson.databind.ObjectMapper实例
使用objectMapper.writeValueAsString()方法将pojo转换为JSON//Simple POJO
Employee emp = new Employee(1, "Lokesh Gupta", 34, "India");
//Object mapper instance
ObjectMapper mapper = new ObjectMapper();
//Convert POJO to JSON
String json = mapper.writeValueAsString(emp);
2.1. Java program to convert Java object to JSONpackage com.howtodoinjava.jackson2.example;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.howtodoinjava.jackson2.example.pojo.Employee;
public class FromJavaPojoToJSON
{
public static void main(String[] args)
{
Employee emp = new Employee(1, "Lokesh Gupta", 34, "India");
ObjectMapper mapper = new ObjectMapper();
try
{
String json = mapper.writeValueAsString(emp);
System.out.println(json);
//Use pretty print for printing the output
String beutifulJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp);
System.out.println(beutifulJson);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}Output:
{"id":1,"name":"Lokesh Gupta","age":34,"location":"India"}
{
"id" : 1,
"name" : "Lokesh Gupta",
"age" : 34,
"location" : "India"
}
这里使用的POJO对象是:package com.howtodoinjava.jackson2.example.pojo;
public class Employee
{
private Integer id;
private String name;
private Integer age;
private String location;
public Employee(Integer id, String name, Integer age, String location) {
super();
this.id = id;
this.name = name;
this.age = age;
this.location = location;
}
//Setters and Getters will be added here
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", age=" + age
+ ", location=" + location + "]";
}
}
3. Convert JSON to Java object example
就像上面的示例一样,从JSON到POJO的转换也仅涉及两个步骤,创建com.fasterxml.jackson.databind.ObjectMapper实例
使用objectMapper.readValue()方法将JSON转换为POJO
e.g.//JSON input
String json = "{\"id\":1,\"name\":\"Lokesh Gupta\",\"age\":34,\"location\":\"India\"}";
//Object mapper instance
ObjectMapper mapper = new ObjectMapper();
//Convert JSON to POJO
Employee emp = mapper.readValue(json, Employee.class);
我们可以在Java中读取json文件,并将其传递给jackson库。
3.1. Java program to convery JSON to Java objectpackage com.howtodoinjava.jackson2.example;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.howtodoinjava.jackson2.example.pojo.Employee;
public class FromJSONToPOJO {
public static void main(String[] args) {
String json = "{\"id\":1,\"name\":\"Lokesh Gupta\",\"age\":34,\"location\":\"India\"}";
ObjectMapper mapper = new ObjectMapper();
try
{
Employee emp = mapper.readValue(json, Employee.class);
System.out.println(emp);
}
catch (JsonGenerationException e)
{
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Program Output.Employee [id=1, name=Lokesh Gupta, age=34, location=India]
Please do not forget to add a default connstructor in POJO class, otherwise you will get this error:com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.howtodoinjava.jackson2.example.pojo.Employee]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)
at [Source: {"id":1,"name":"Lokesh Gupta","age":34,"location":"India"}; line: 1, column: 2]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1106)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:296)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2726)
at com.howtodoinjava.jackson2.example.FromJSONToPOJO.main(FromJSONToPOJO.java:18)
这就是使用Jackson 2库将Java对象转换为JSON并将JSON字符串转换为Java对象的所有示例。
让我知道您是否对如何将json对象转换为java对象有任何疑问。