创建项目
在IDEA中新建一个Java项目,在建好后的项目结构中添加一些必要的目录和文件,我最终的项目结构如图所示:
其中,
Person
和Dog
是用于演示的两个类;JSONTest
是实现将Person
和Dog
的实例对象转换成字符串,以及将字符串转换成对象的类;JsonExample
是JSOnTest
的实现类。
引入jar包
可以使用已有的方法实现JSON转换,需要先引入jar包。
步骤如下:
点击进入“项目结构” ==> 点击“库” ==> 点击 “+” 添加并选择“来自Maven” ==> 搜索并下载如图三个jar包
在搜索框中搜索:
最后一路应用和确认即可。
源码
Person.java
public class Person {
private String name;
private int age;
private Dog dog;
public Person() {
// Empty constructor
}
public Person(String name, int age, Dog dog) {
this.name = name;
this.age = age;
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
}
Dog.java
package com.example;
public class Dog {
private String name;
public Dog() {
this.name = "Unknown";
}
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
JSONTest.java
package test;
import com.example.Dog;
import com.example.Person;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JSONTest {
public void testWriteJson() {
// 创建对象
Dog dog = new Dog("旺财");
Person person = new Person("张三", 18, dog);
// 将对象转换为JSON字符串
ObjectMapper objectMapper = new ObjectMapper();
try {
String jsonStr = objectMapper.writeValueAsString(person);
System.out.println(jsonStr);
} catch (Exception e) {
e.printStackTrace();
}
}
public void testReadJson() {
// JSON字符串
String jsonStr = "{\"name\":\"张三\",\"age\":18,\"dog\":{\"name\":\"旺财\"}}";
// 将JSON字符串转换为对象
ObjectMapper objectMapper = new ObjectMapper();
try {
Person person = objectMapper.readValue(jsonStr, Person.class);
System.out.println(person);
} catch (Exception e) {
e.printStackTrace();
}
}
}
JsonExample.java
package test;
public class JsonExample {
public static void main(String[] args) {
JSONTest jsonTest = new JSONTest();
jsonTest.testWriteJson();
jsonTest.testReadJson();
}
}
运行测试
可以在JSONTest
中的System.out.println(person);
那一行打上一个短点,方便运行调试时查看,对象变量的具体值。
点击调试,结果如下: