# Jackson将对象转换为 json 并将 json 转换为对象 > 原文: [https://howtodoinjava.com/jackson/jackson-convert-object-to-from-json/](https://howtodoinjava.com/jackson/jackson-convert-object-to-from-json/) **Jackson** *将对象转换为 JSON* 示例,*将 json 转换为对象*示例。 学习使用 jackson objectmapper 从 json 字符串填充 Java 对象,并从 java 对象写入 json 字符串。 Jackson 用于**将 Java 对象转换为 json** ,而**则将 json 转换为 Java 对象**。 在这个快速的 **jackson 教程**中,我给出了将 Java 对象以编程方式转换为 json 的示例。 ```java Table of Contents 1\. Jackson maven dependency 2\. Convert Java object to JSON 3\. Pretty print JSON 4\. Convert JSON to Java object ``` 在进入代码示例之前,让我们定义一个简单的 pojo 类,我们将在此示例中使用该类进行转换。 ```java public class Employee { private Integer id; private String firstName; private String lastName; public Employee(){ } public Employee(Integer id, String firstName, String lastName, Date birthDate){ this.id = id; this.firstName = firstName; this.lastName = lastName; } //Getters and setters @Override public String toString() { return "Employee [id=" + id + ", firstName=" + firstName + ", " + "lastName=" + lastName + "]"; } } ``` ## 1.Jackson依赖 您可以通过两种方式添加 Jackson 依赖项,具体取决于您的项目类型。 #### 1.1 基于 Maven 的项目 在 pom.xml 文件中添加以下依赖项。 ```java com.fasterxml.jackson.core jackson-core 2.9.6 ``` #### 1.2 对于 ANT 或其他项目类型 对于非 Maven 用例,可以从 [Central Maven 仓库](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/)下载 jar。 ## 2.Jackson ObjectMapper ObjectMapper 是用于数据绑定的主要 API。 它带有几种读取器/写入器方法,以执行从 Java 到 JSON 的转换。 它将使用`JsonParser`和`JsonGenerator`的实例来实现 JSON 的实际读取/写入。 #### 2.1 将 json 转换为对象的语法 使用以下示例语法读取 JSON 并填充 Java 对象。 ```java ObjectMapper mapper = new ObjectMapper(); Object value = mapper.readValue(jsonSource , javaObject); ``` * `jsonSource` – 将获取 json 字符串的输入源。 * `javaObject` – 需要填充的目标 Java 对象。 #### 2.2 将对象转换为 json 的语法 使用以下示例语法将 Java 对象写入 json 字符串。 ```java ObjectMapper mapper = new ObjectMapper(); Object value = mapper.writeValue(jsonTarget, javaObject); ``` * `jsonTarget` – 将写入 json 字符串的输出目标。 * `javaObject` – 需要转换为 json 的源 Java 对象。 ## 3\. Jackson 将对象转换为 JSON 要转换雇员对象并将其写入某个文件,可以使用以下代码。 ```java package test.jackson; import java.io.File; import java.io.IOException; import java.util.Date; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JavaToJSONExample { public static void main(String[] args) { @SuppressWarnings("deprecation") Employee employee = new Employee(1, "Lokesh", "Gupta", new Date(1981,8,18)); ObjectMapper mapper = new ObjectMapper(); try { mapper.writeValue(new File("c://temp/employee.json"), employee); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ``` 程序输出。 ```java {"id":1,"firstName":"Lokesh","lastName":"Gupta"} ``` ## 4\. Jackson 精美打印 JSON 输出 如果看上面的输出,那么写在文本文件中的输出是非常原始的并且没有格式化。 您可以使用 ~~`defaultPrettyPrintingWriter()`~~ **`writerWithDefaultPrettyPrinter`** 实例编写格式化的 JSON 内容,如下所示: ```java package test.jackson; import java.io.File; import java.io.IOException; import java.util.Date; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JavaToPrettyJSONExample { public static void main(String[] args) { @SuppressWarnings("deprecation") Employee employee = new Employee(1, "Lokesh", "Gupta", new Date(1981,8,18)); ObjectMapper mapper = new ObjectMapper(); try { mapper.defaultPrettyPrintingWriter().writeValue(new File("c://temp/employee.json"), employee); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ``` 程序输出: ```java { "id" : 1, "firstName" : "Lokesh", "lastName" : "Gupta" } ``` ## 5\. Jackson 将 JSON 转换为 Java 对象 要将 json 字符串转换为 java 对象(例如 Employee 对象),请使用以下代码: ```java package test.jackson; import java.io.File; import java.io.IOException; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; public class JSONToJavaExample { public static void main(String[] args) { Employee employee = null; ObjectMapper mapper = new ObjectMapper(); try { employee = mapper.readValue(new File("c://temp/employee.json"), Employee.class); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println(employee); } } ``` 程序输出: ```java Employee [id=1, firstName=Lokesh, lastName=Gupta] ``` Make sure you have defined a default constructor in your POJO class (e.g. `Employee.java` in our case). Jackson uses default constructor to create the instances of java class using reflection. If default constructor is not provided, then you will get `JsonMappingException` in runtime. 学习愉快!