Rumah  >  Artikel  >  Java  >  Bagaimana untuk menukar Json kepada Senarai, Peta dan entiti kepada satu sama lain di Jawa

Bagaimana untuk menukar Json kepada Senarai, Peta dan entiti kepada satu sama lain di Jawa

WBOY
WBOYke hadapan
2023-05-27 12:07:201854semak imbas

Langkah 1: Import dependensi

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>

Langkah 2: Mula menggunakan

Senario 1: Tukar objek biasa (Kacang).

1. Menukar rentetan JavaBeans biasa kepada Json ialah operasi yang paling biasa digunakan Mula-mula buat kelas mudah, seperti Person.

public class Person
{
    private String name;
    private int age;
    private boolean isMale;
    private List<String> hobbies;

    // 省略构造器和getter/setter方法,注意重写toString方法,便于查看控制台输出。

    @Override
    public String toString()
    {
        final StringBuilder sb = new StringBuilder("Person{");
        sb.append("name=&#39;").append(name).append(&#39;\&#39;&#39;);
        sb.append(", age=").append(age);
        sb.append(", isMale=").append(isMale);
        sb.append(", hobbies=").append(hobbies);
        sb.append(&#39;}&#39;);
        return sb.toString();
    }
}

2. Gunakan Gson untuk menghuraikan kejadian Orang.

1 Mula-mula buat objek Orang.
2 Mencipta objek Gson.
3 Panggil kaedah Gson's String toJson(Object) untuk menukar objek kepada rentetan json.

@Test
public void testBeanToJson()
{
    // 创建Bean
    Person p = new Person("艾伦·耶格尔", 16, true, Arrays.asList("自由", "迫害莱纳"));
    // 创建Gson对象
    Gson gson = new Gson();
    // 调用Gson的String toJson(Object)方法将Bean转换为json字符串
    String pJson = gson.toJson(p);

    System.out.println(pJson);
    // {"name":"艾伦·耶格尔","age":16,"isMale":true,"hobbies":["自由","迫害莱纳"]}
}

3. Tukar rentetan json bagi contoh Orang kepada objek Orang.

Panggil kaedah t fromJson(String, Class) Gson untuk menukar rentetan Json kepada objek

// 调用Gson的 <T> t fromJson(String, Class)方法,将Json串转换为对象
Person person = gson.fromJson(pJson, Person.class);
System.out.println(person);
// Person{name=&#39;艾伦·耶格尔&#39;, age=16, isMale=true, hobbies=[自由, 迫害莱纳]}

Senario penggunaan 2: Tukar koleksi Senarai.

@Test
public void testListToJson()
{
    // 先准备一个List集合
    List<Person> list = new ArrayList<Person>();
    list.add(new Person("三笠·阿克曼", 16, false, Arrays.asList("砍巨人", "保护艾伦")));
    list.add(new Person("阿明·阿诺德", 16, true, Arrays.asList("看书", "玩海螺")));
    System.out.println(list);
    // 创建Gson实例
    Gson gson = new Gson();
    // 调用Gson的toJson方法
    String listJson = gson.toJson(list);
    System.out.println(listJson);
    // [{"name":"三笠·阿克曼","age":16,"isMale":false,"hobbies":["砍巨人","保护艾伦"]},{"name":"阿明·阿诺德","age":16,"isMale":true,"hobbies":["看书","玩海螺"]}]
}

Json to List object

Memandangkan antara muka Senarai mempunyai generik, jika kaedah t fromJson(String, Class) juga dipanggil, maka walaupun ia masih akan menjadi koleksi Senarai, data dalam koleksi tidak akan dikembalikan Tetapi ia bukan objek Orang, tetapi objek Peta, dan atribut Orang disimpan dalam contoh Peta dalam bentuk pasangan nilai kunci. Mari sahkan ini.

......// 此处延续以上代码
List fromJson = gson.fromJson(listJson, List.class);
System.out.println(fromJson.get(0).getClass());
// class com.google.gson.internal.LinkedTreeMap

Jika anda ingin mendapatkan Senarai yang sama seperti sebelum ini, maka kita perlu memanggil kaedah Gson's T fromJson(String, Type). Seperti berikut:

Anda boleh menggunakan kelas TypeToken yang disediakan oleh pakej Gson untuk mendapatkan jenis Jenis, dan kemudian gunakannya sebagai parameter kaedah ini. Kelas ini mempunyai jenis generik, dan jenis generik ini ialah jenis selepas rentetan Json ditukar kepada objek (di sini, Senaraikan Kami tidak perlu mengatasi sebarang kaedah dalam kelas ini kelas ini dan panggil kaedah Just getTpye().

Nota: Pastikan anda menulis jenis generik kelas dalaman tanpa nama ini sebagai jenis objek yang dijana selepas menghuraikan rentetan Json.

......// 此处延续以上代码
// 调用Gson的 T fromJson(String, Type)将List集合的json串反序列化为List对象
List<Person> plist = gson.fromJson(listJson, new TypeToken<List<Person>>(){}.getType());
System.out.println(plist);
// [Person{name=&#39;三笠·阿克曼&#39;, age=16, isMale=false, hobbies=[砍巨人, 保护艾伦]}, Person{name=&#39;阿明·阿诺德&#39;, age=16, isMale=true, hobbies=[看书, 玩海螺]}]

Senario penggunaan tiga: Tukar koleksi Peta.

Langkah-langkah untuk menukar Peta adalah sama seperti menukar Senarai Kod adalah seperti berikut. Sila lihat Senarai penukaran untuk mendapatkan butiran.

@Test
public void testMapToJson()
{
    Map<String, Person> map = new HashMap<>();
    map.put("p1", new Person("利威尔·阿克曼", 35, true, Arrays.asList("砍猴儿", "打扫卫生")));
    map.put("p2", new Person("韩吉·佐耶", 33, false, Arrays.asList("研究巨人", "讲故事")));

    Gson gson = new Gson();
    String mapJson = gson.toJson(map);

    System.out.println(mapJson);
    // {"p1":{"name":"利威尔·阿克曼","age":35,"isMale":true,"hobbies":["砍猴儿","打扫卫生"]},"p2":{"name":"韩吉·佐耶","age":33,"isMale":false,"hobbies":["研究巨人","讲故事"]}}
    Map<String, Person> jsonMap = gson.fromJson(mapJson, new TypeToken<Map<String, Person>>() { }.getType());
    System.out.println(jsonMap);
}

Secara umum, terdapat dua kaedah: toJson() dan fromJson

Atas ialah kandungan terperinci Bagaimana untuk menukar Json kepada Senarai, Peta dan entiti kepada satu sama lain di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam