Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON di Java?

Bagaimana untuk mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON di Java?

王林
王林ke hadapan
2023-09-07 18:45:02893semak imbas

Bagaimana untuk mengabaikan sifat yang tidak diketahui semasa menghuraikan JSON di Java?

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.

JSON

Java menggunakan JSON (JavaScript Object Notation) sebagai format pertukaran data yang ringan dan digunakan secara meluas untuk menghantar dan menyimpan data berstruktur. Formatnya yang ringkas dan boleh dibaca oleh manusia membolehkan perwakilan objek, tatasusunan, rentetan, nombor, nilai Boolean dan nilai nol. JSON terdiri daripada pasangan nilai kunci menggunakan kunci dalam bentuk rentetan untuk memudahkan beban pemprosesannya.

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.

Kaedah

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

Perpustakaan Jackson dengan ObjectMapper

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.

Algoritma

  • 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.

Contoh

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 +
            '}';
   }
}

Output

Person{name='John', age=25}

Perpustakaan Gson dengan GsonBuilder

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.

Algoritma

  • 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.

Contoh

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 +
            '}';
   }
}

Output

Person{name='John', age=25}

JSON-B (API Java untuk pengikatan JSON)

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.

Algoritma

  • 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.

Contoh

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 +
            '}';
   }
}

Output

Person{name='John', age=25}

Analisis manual

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.

Algoritma

  • 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.

Contoh

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 +
            '}';
   }
}

Output

Person{name='John', age=25}

KESIMPULAN

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!

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