Semasa memproses data JSON dalam Java, pembangun mungkin menghadapi sifat atau medan yang tidak diketahui yang tidak ditakrifkan dalam kelas Java yang sepadan. Unsur yang tidak dikenali ini boleh menyebabkan masalah semasa menghurai, menyebabkan pengecualian atau kehilangan data. Untuk menyelesaikan masalah ini, pengaturcara boleh melaksanakan mekanisme untuk mengabaikan sifat yang tidak diketahui tersebut apabila menghuraikan JSON.
Mengkonfigurasi penghurai JSON anda dengan betul boleh menghalang sifat yang tidak dijangka daripada mengganggu kefungsian aplikasi anda. Data JSON boleh dihuraikan dengan cara yang lebih mantap dan fleksibel dengan melangkau sifat yang tidak dikenali dan menghuraikan hanya yang sepadan dengan struktur yang ditentukan. Ini memastikan bahawa maklumat penting tidak diabaikan, manakala data yang tidak perlu atau tidak sah juga diabaikan.
Frasa semula format JSON dalam Java biasanya diwakili sebagai rentetan dan ditukar antara objek Java menggunakan pustaka penghuraian dan penyirian. API ini membenarkan menghuraikan rentetan JSON ke dalam objek Java dan sebaliknya, membolehkan penyepaduan antara sistem berasaskan JSON dan aplikasi Java. Komunikasi yang lancar ini memudahkan pertukaran data yang mudah antara sistem yang berbeza.
Terdapat beberapa cara untuk mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON dalam Java. Berikut adalah beberapa kaedah yang biasa digunakan:
Pustaka Jackson dengan ObjectMapper
Perpustakaan Gson dengan GsonBuilder
JSON-B (API Java untuk pengikatan JSON)
Analisis manual
Kaedah ini melibatkan konfigurasi ObjectMapper (kelas yang disediakan oleh perpustakaan Jackson) dengan menetapkan ciri DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES kepada palsu. Ini membolehkan ObjectMapper mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON, dengan itu menghalang pengecualian daripada dilemparkan.
Buat contoh ObjectMapper.
Konfigurasikan ObjectMapper untuk menetapkan ciri DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES kepada palsu.
Gunakan ObjectMapper untuk menghuraikan data JSON ke dalam objek Java yang diperlukan.
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonExample { public static void main(String[] args) throws Exception { String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}"; ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); Person person = objectMapper.readValue(jsonString, Person.class); System.out.println(person); } } class Person { private String name; private int age; // Getters and setters @Override public String toString() { return "Person{" + "name='" + name + ''' + ", age=" + age + '}'; } }
Person{name='John', age=25}
Untuk menggunakan perpustakaan Gson dalam kaedah ini, anda perlu mencipta tika Gson menggunakan kelas GsonBuilder. Ini boleh dicapai dengan memanggil kaedah setIgnoreUnknownProperties() dengan hujah benar. Melakukannya mengarahkan Gson untuk mengabaikan sifat yang tidak diketahui semasa penghuraian JSON, memastikan ia tidak dianggap sebagai ralat.
Buat tika GsonBuilder.
Panggil kaedah setIgnoreUnknownProperties(true) pada contoh GsonBuilder.
Gunakan GsonBuilder untuk membina objek Gson.
Gunakan objek Gson untuk menghuraikan data JSON ke dalam objek Java yang diperlukan.
import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class GsonExample { public static void main(String[] args) { String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}"; Gson gson = new GsonBuilder() .setIgnoreUnknownProperties(true) .create(); Person person = gson.fromJson(jsonString, Person.class); System.out.println(person); } } class Person { private String name; private int age; // Getters and setters @Override public String toString() { return "Person{" + "name='" + name + ''' + ", age=" + age + '}'; } }
Person{name='John', age=25}
Untuk mengabaikan sifat yang tidak diketahui menggunakan JSON-B, kelas Java yang mewakili struktur JSON perlu diberi anotasi dengan @JsonbTransient pada medan atau sifat yang harus diabaikan. Anotasi ini memberitahu pustaka JSON-B untuk melangkau sifat ini semasa penghuraian JSON.
Annotate kelas Java yang mewakili struktur JSON menggunakan anotasi @JsonbTransient pada medan atau sifat yang anda mahu abaikan.
Gunakan pelaksanaan JSON-B untuk menghuraikan data JSON ke dalam objek Java yang diperlukan.
import javax.json.bind.Jsonb; import javax.json.bind.JsonbBuilder; public class JsonBExample { public static void main(String[] args) { String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}"; Jsonb jsonb = JsonbBuilder.create(); Person person = jsonb.fromJson(jsonString, Person.class); System.out.println(person); } } class Person { private String name; private int age; // Getters and setters @Override public String toString() { return "Person{" + "name='" + name + ''' + ", age=" + age + '}'; } }
Person{name='John', age=25}
Untuk menghuraikan data JSON menggunakan perpustakaan seperti org.json atau json-simple, pembangun mengikuti pendekatan mengulang secara manual ke atas kunci dan nilai objek JSON. Pembangun boleh memperibadikan gelagat penghuraian yang mereka kehendaki dengan memproses sifat yang dikenal pasti secara terpilih dan mengabaikan sifat yang tidak diketahui.
Gunakan perpustakaan JSON seperti org.json atau json-simple untuk menghuraikan data JSON ke dalam objek JSON.
Lelaran pada kekunci dan nilai objek JSON.
Proses sifat yang diiktiraf dan abaikan sebarang sifat yang tidak dikenali atau tidak diketahui semasa lelaran.
import org.json.JSONObject; public class ManualParsingExample { public static void main(String[] args) { String jsonString = "{"name": "John", "age": 25, "unknownProperty": "Value"}"; JSONObject jsonObject = new JSONObject(jsonString); String name = jsonObject.optString("name"); int age = jsonObject.optInt("age"); Person person = new Person(); person.setName(name); person.setAge(age); System.out.println(person); } } class Person { private String name; private int age; // Getters and setters @Override public String toString() { return "Person{" + "name='" + name + ''' + ", age=" + age + '}'; } }
Person{name='John', age=25}
Dalam tutorial ini, apabila menghuraikan JSON dalam Java, adalah penting untuk mengendalikan sifat yang tidak diketahui dengan betul untuk memastikan keteguhan dan fleksibiliti dalam pemprosesan data. Dengan mengkonfigurasi ObjectMapper dengan Jackson, menggunakan Gson dan GsonBuilder, memanfaatkan anotasi JSON-B, atau menghuraikan data JSON secara manual, pembangun boleh mengabaikan sifat yang tidak diketahui dengan berkesan dan mengurangkan masalah yang mungkin berlaku apabila menghuraikan JSON dalam Java.
Atas ialah kandungan terperinci Bagaimana untuk mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!