Chuyển đổi chuỗi thành JsonObject với Gson

1. Khái quát chung

Khi làm việc với JSON trong Java bằng thư viện Gson, chúng tôi có một số tùy chọn để chuyển đổi JSON thô thành các lớp hoặc cấu trúc dữ liệu khác mà chúng tôi có thể làm việc dễ dàng hơn.

Ví dụ: chúng ta có thể chuyển đổi chuỗi JSON thành Bản đồ hoặc tạo một lớp tùy chỉnh với ánh xạ.

Tuy nhiên, đôi khi, thật tiện lợi khi có thể chuyển đổi JSON của chúng ta thành một đối tượng chung. Trong hướng dẫn này, chúng ta sẽ xem cách Gson có thể cung cấp cho chúng ta một JsonObject từ một Chuỗi.

2. Sự phụ thuộc của Maven

Trước hết, chúng ta cần bao gồm phụ thuộc gson trong pom.xml của chúng tôi :

 com.google.code.gson gson 2.8.5 

Chúng tôi có thể tìm thấy phiên bản mới nhất của gson trên Maven Central.

3. Sử dụng JsonParser

Cách tiếp cận đầu tiên mà chúng ta sẽ thấy để chuyển đổi Chuỗi JSON thành JsonObject là một quy trình hai bước sử dụng lớp JsonParser .

Trong bước đầu tiên, chúng ta cần phân tích cú pháp Chuỗi ban đầu của mình .

Gson cung cấp cho chúng ta một trình phân tích cú pháp có tên là JsonParser, trình phân tích cú pháp chuỗi JSON được chỉ định thành một cây phân tích cú pháp của JsonElements :

public JsonElement parse(String json) throws JsonSyntaxException

Khi đã phân tích cú pháp Chuỗi của mình trong cây JsonElement , chúng ta sẽ sử dụng phương thức getAsJsonObject () , phương thức này sẽ trả về kết quả mong muốn.

Hãy xem cách chúng tôi có được JsonObject cuối cùng của mình :

String json = "{ \"name\": \"Baeldung\", \"java\": true }"; JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject(); Assert.assertTrue(jsonObject.isJsonObject()); Assert.assertTrue(jsonObject.get("name").getAsString().equals("Baeldung")); Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);

4. Sử dụng fromJson

Trong cách tiếp cận thứ hai, chúng ta sẽ xem cách tạo một cá thể Gson và sử dụng phương thức fromJson . Phương thức này giải mã chuỗi JSON được chỉ định thành một đối tượng của lớp được chỉ định:

public  T fromJson(String json, Class classOfT) throws JsonSyntaxException

Hãy xem cách chúng ta có thể sử dụng phương thức này để phân tích cú pháp Chuỗi JSON của chúng ta , truyền lớp JsonObject làm tham số thứ hai:

String json = "{ \"name\": \"Baeldung\", \"java\": true }"; JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class); Assert.assertTrue(convertedObject.isJsonObject()); Assert.assertTrue(convertedObject.get("name").getAsString().equals("Baeldung")); Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);

5. Kết luận

Trong hướng dẫn cơ bản này, chúng ta đã tìm hiểu hai cách khác nhau để sử dụng thư viện Gson để lấy JsonObject từ Chuỗi có định dạng JSON trong Java. Do đó, chúng ta nên sử dụng cái phù hợp hơn với các hoạt động JSON trung gian của chúng ta.

Như thường lệ, mã nguồn cho những ví dụ này có sẵn trên GitHub.