JSON与Java类型对应关系

在Java开发中,我们经常会遇到需要将Java对象转换成JSON格式或者将JSON格式转换成Java对象的情况。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是独立于语言的,广泛应用于前后端的数据传输和存储。Java作为一种流行的编程语言,也提供了相应的工具来实现JSON与Java类型的相互转换。本文将介绍JSON与Java类型之间的对应关系,并提供相应的代码示例。

一、JSON与Java的基本数据类型对应关系

  1. JSON的基本数据类型包括:字符串、数值、布尔值、null。
  2. Java的基本数据类型与JSON的对应关系如下:
JSON类型 Java类型
字符串 String
数值 Number
布尔值 boolean
null null

例如,将Java的字符串转换成JSON格式:

String javaString = "Hello, World!";
String jsonString = JSON.toJSONString(javaString);
System.out.println(jsonString); // 输出:"\"Hello, World!\""

二、JSON与Java的集合类型对应关系

JSON中的集合类型包括数组和对象,Java也有相应的集合类型来表示。

  1. JSON数组对应Java的List、Set、数组等集合类型。例如,将Java的List转换成JSON数组:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
String jsonArray = JSON.toJSONString(list);
System.out.println(jsonArray); // 输出:["A","B","C"]
  1. JSON对象对应Java的Map、对象等类型。例如,将Java的Map转换成JSON对象:
Map<String, Object> map = new HashMap<>();
map.put("name", "Tom");
map.put("age", 18);
String jsonObject = JSON.toJSONString(map);
System.out.println(jsonObject); // 输出:{"name":"Tom","age":18}

三、JSON与Java的日期类型对应关系

在Java中,日期类型使用Date、Calendar等类表示,而JSON中没有专门的日期类型,通常将日期转换成字符串表示。

  1. 将Java的Date对象转换成JSON字符串:
Date date = new Date();
String jsonString = JSON.toJSONString(date);
System.out.println(jsonString); // 输出:"\"2022-01-01T12:00:00.000+0800\""
  1. 将JSON字符串转换成Java的Date对象:
String jsonString = "\"2022-01-01T12:00:00.000+0800\"";
Date date = JSON.parseObject(jsonString, Date.class);
System.out.println(date); // 输出:Sat Jan 01 12:00:00 CST 2022

四、JSON与Java的自定义对象对应关系

对于复杂的数据类型,可以通过自定义Java对象来表示,并将其转换成JSON格式。

  1. 创建一个Java对象:
public class Person {
    private String name;
    private int age;
    
    // 省略getter和setter方法
}
  1. 将Java对象转换成JSON字符串:
Person person = new Person();
person.setName("Tom");
person.setAge(18);
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString); // 输出:{"name":"Tom","age":18}
  1. 将JSON字符串转换成Java对象:
String jsonString = "{\"name\":\"Tom\",\"age\":18}";
Person person = JSON.parseObject(jsonString, Person.class);
System.out.println(person.getName()); // 输出:"Tom"
System.out.println(person.getAge()); // 输出:18

以上代码示例展示了JSON与Java类型的基本对应关系,通过使用阿里巴巴开源的Fastjson库可以方便地实现JSON与Java类型之间的转换。除了Fastjson,还有其他一些常用的JSON库,如Jackson、Gson等,它们提供了类似的功能,开发者可以根据具体需求选择合适的库。

经过对JSON与Java类型对应关系的了解,我们能够更加方便地在Java开发中处理JSON数据,实现数据的传输和存储。同时,了解JSON与Java类型的对应关系也有助于我们在前后端交互、接口调用等场景中更好地理解数据的结构和格式。