Heim > Java > javaLernprogramm > Hauptteil

So konvertieren Sie Json in Java in List, Map und Entity ineinander

WBOY
Freigeben: 2023-05-27 12:07:20
nach vorne
1878 Leute haben es durchsucht

Der erste Schritt: Abhängigkeiten importieren

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>
Nach dem Login kopieren

Der zweite Schritt: Beginnen Sie mit der Verwendung von

Szenario 1: Konvertieren Sie gewöhnliche Objekte (Bean).

1. Das Konvertieren gewöhnlicher JavaBeans in Json-Strings ist die häufigste Operation. Erstellen Sie zunächst eine einfache Klasse, z. B. 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();
    }
}
Nach dem Login kopieren

2. Verwenden Sie Gson, um Personeninstanzen zu analysieren.

1 Erstellen Sie zunächst das Person-Objekt.
2 Gson-Objekt erstellen.
3 Rufen Sie die String toJson(Object)-Methode von Gson auf, um das Objekt in einen JSON-String zu konvertieren.

@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":["自由","迫害莱纳"]}
}
Nach dem Login kopieren

3. Konvertieren Sie den JSON-String der Person-Instanz in ein Person-Objekt.

Rufen Sie die Methode t fromJson(String, Class) von Gson auf, um den Json-String in ein Objekt zu konvertieren.

// 调用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=[自由, 迫害莱纳]}
Nach dem Login kopieren

Verwendungsszenario zwei: Listensammlung konvertieren.

@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":["看书","玩海螺"]}]
}
Nach dem Login kopieren

Json to List object

Da die List-Schnittstelle Generika hat, wird auch die t fromJson(String, Class)-Methode aufgerufen, obwohl das zurückgegebene Objekt immer noch eine Liste ist Sammlung. Die Daten in der Sammlung sind kein Personenobjekt, sondern ein Kartenobjekt, und die Personenattribute werden in der Karteninstanz in Form von Schlüssel-Wert-Paaren gespeichert. Lassen Sie uns dies überprüfen.

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

Wenn wir die gleiche Liste wie zuvor erhalten möchten, müssen wir die T fromJson(String, Type)-Methode von Gson aufrufen. Wie folgt:

Sie können die vom Gson-Paket bereitgestellte TypeToken-Klasse verwenden, um den Type-Typ abzurufen, und ihn dann als Parameter dieser Methode verwenden. Diese Klasse hat einen generischen Typ, und dieser generische Typ ist der Typ, nachdem die Json-Zeichenfolge in ein Objekt konvertiert wurde (hier Liste). Wir müssen keine Methoden in dieser Klasse überschreiben. Wir müssen nur eine anonyme innere Klasse erstellen dieser Klasse und rufen Sie die Methode Just getTpye() auf.

Hinweis: Stellen Sie sicher, dass Sie den generischen Typ dieser anonymen inneren Klasse als Objekttyp schreiben, der nach dem Parsen der Json-Zeichenfolge generiert wird.

......// 此处延续以上代码
// 调用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=[看书, 玩海螺]}]
Nach dem Login kopieren

Nutzungsszenario drei: Kartensammlung konvertieren.

Die Schritte zum Konvertieren der Karte sind genau die gleichen wie die Schritte zum Konvertieren der Liste. Der Code lautet wie folgt. Weitere Informationen finden Sie unter Listenkonvertierung.

@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);
}
Nach dem Login kopieren

Im Allgemeinen gibt es zwei Methoden: toJson() und fromJson

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Json in Java in List, Map und Entity ineinander. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage