在Java中,对象转换为JSON字符串以及JSON字符串转换为Java对象是非常常见的操作,通常我们会使用一些库来帮助我们完成这一过程。最常用的两个库是Gson和Jackson。
pom.xml中添加如下依赖: <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
import com.google.gson.Gson;
public class Main {
static class Person {
String name;
int age;
// 构造方法、getters、setters省略
}
public static void main(String[] args) {
Person person = new Person();
person.setName("Tom");
person.setAge(30);
Gson gson = new Gson();
String json = gson.toJson(person);
System.out.println(json); // 输出:{"name":"Tom","age":30}
}
}
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Map;
public class GsonToJsonExample {
// 假设KnowPointStatical是一个具有相应getter和setter方法的Java Bean
static class KnowPointStatical {
String pointName;
int totalQuestions;
// 其他属性及getter和setter省略
}
public static void main(String[] args) {
String jsonString = "{"
+ "\"Math\": {\"totalQuestions\": 50},"
+ "\"English\": {\"totalQuestions\": 45},"
+ "\"Science\": {\"totalQuestions\": 60}"
+ "}";
Gson gson = new Gson();
// 定义类型Token来指示目标类型
Type type = new TypeToken<Map<String, KnowPointStatical>>(){}.getType();
try {
// 直接将JSON字符串转换为指定类型的Map
Map<String, KnowPointStatical> map = gson.fromJson(jsonString, type);
// 打印Map内容
for (Map.Entry<String, KnowPointStatical> entry : map.entrySet()) {
System.out.println("Subject: " + entry.getKey() + ", Total Questions: " + entry.getValue().getTotalQuestions());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}