您的位置:

JavaJson格式化详解

一、Json序列化

Json序列化是指将一个Java对象转化为Json字符串的过程。Json字符串是一种轻量级的数据交换格式,常用于客户端与服务端之间数据传输。

Java提供了多个Json序列化库,比如Gson、Jackson、FastJson等。下面以Gson为例介绍Json序列化的实现。

// 定义一个Java对象
class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

// 对象转Json字符串
Gson gson = new Gson();
Person person = new Person("张三", 20);
String jsonStr = gson.toJson(person);
System.out.println(jsonStr); // {"name":"张三","age":20}

在上面的例子中,我们使用了Gson库将一个Person对象转换为Json字符串。这里需要注意的是,Person类的属性必须使用private修饰符,否则Gson将无法将其转化为Json字符串。同时,我们也可以使用其他的Json库来实现相同的功能。

二、Json反序列化

Json反序列化是指将一个Json字符串转化为Java对象的过程。与Json序列化相反,Json反序列化常用于服务端接收客户端传来的Json数据。

Java提供了多个Json反序列化库,同样以Gson为例介绍Json反序列化的实现。

// Json字符串转对象
Gson gson = new Gson();
String jsonStr = "{\"name\":\"张三\",\"age\":20}";
Person person = gson.fromJson(jsonStr, Person.class);
System.out.println(person.getName()); // 张三
System.out.println(person.getAge()); // 20

在上面的例子中,我们使用了Gson库将一个Json字符串转化为Person对象。需要注意的是,Json字符串的属性名必须与Java对象的属性名一一对应,这样才能正确地将Json字符串转换为Java对象。同时,我们也可以使用其他的Json库来实现相同的功能。

三、Json格式化

Json格式化是指将一个未格式化的Json字符串按照一定的规则进行格式化,使其更具可读性。Java提供了多个Json格式化工具包,如Jackson、Gson等。

以Gson为例,下面介绍Json格式化的实现。

// 格式化Json字符串
String jsonStr = "{\"name\":\"张三\",\"age\":20}";
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonElement je = JsonParser.parseString(jsonStr);
System.out.println(gson.toJson(je)); 
/*
{
  "name": "张三",
  "age": 20
}
*/

在上面的例子中,我们使用了Gson库将一个未格式化的Json字符串按照一定的规则格式化。这里使用了setPrettyPrinting()方法,表示采用默认的格式化方式。同时,我们也可以自定义格式化方式来满足特定的格式化需求。

四、Json转JavaBean

Json转JavaBean是指将一个Json对象或Json字符串转化为JavaBean对象的过程。JavaBean是一个符合JavaBean规范的Java类,其属性需要使用private修饰符,并且提供getter和setter方法,以便于访问和修改该属性。JavaBean主要用于数据传输和业务处理。

下面以Gson为例介绍Json转JavaBean的实现。

// Json字符串转JavaBean
class Student {
    private String name;
    private int age;
    private String[] hobbies;

    // getter和setter方法省略
}

String jsonStr = "{\"name\":\"小明\",\"age\":18,\"hobbies\":[\"游泳\",\"足球\"]}";
Gson gson = new Gson();
Student student = gson.fromJson(jsonStr, Student.class);
System.out.println(student.getName()); // 小明
System.out.println(student.getAge()); // 18
System.out.println(Arrays.toString(student.getHobbies())); // [游泳, 足球]

在上面的例子中,我们使用了Gson库将一个Json字符串转换为JavaBean对象。这里需要注意的是,Json字符串中的属性名必须与JavaBean类的属性名一一对应,否则转换过程会失败。同时,我们也可以使用其他的Json库来实现相同的功能。

五、Json数组转Java集合

Json数组转Java集合是指将一个Json数组转化为Java集合的过程,其中Java集合可以是List、Set或Map等类型。

下面以Gson为例介绍Json数组转Java集合的实现。

// Json数组转Java集合
Gson gson = new Gson();
String jsonStr = "[\"电影\",\"音乐\",\"互联网\"]";
List list = gson.fromJson(jsonStr, new TypeToken<List<String>>(){}.getType());
System.out.println(list); // [电影, 音乐, 互联网]

  

在上面的例子中,我们使用了Gson库将一个Json数组转化为List集合。这里需要注意的是,我们需要使用new TypeToken<List<String>>(){}.getType()方法获取List<String>类型的泛型,否则转换会失败。同时,我们也可以将Json数组转为其他类型的Java集合。