Konversikan dua jenis json ke objek yang sama

Saya sedang menulis kerangka kerja untuk api layanan web yang mengembalikan json. Saya menggunakan perpustakaan Jackson untuk membatalkan serialisasi string json. Api mengembalikan properti untuk terus mengambil hasil permintaan. Tanggapannya seperti ini:

{
    continueToken:"token",
    results: [ 
                {
                },
             ]
}

Semua tanggapan memiliki struktur ini. Satu-satunya masalah adalah nama properti continue berbeda dari permintaan ke permintaan lainnya. Namanya seperti ini

prefix + "continue"

Saya hanya ingin membuat satu kelas dan dapat memetakan json ke kelas ini. Bagaimana saya bisa melakukan itu? Inilah yang ingin saya miliki:

public class Response {
    private String continueToken;
    private List<Article> results;

    public Response (String continueToken, Article[] articles) {
         this.continueToken = continueToken;
         this.results = Arrays.asList(articles);
    }
}
//Here the name is ttcontinue
String json = request.get(type1);
Response r = jsonToResponse(json);

//Here the name is llcontinue
json = request.get(type2);
r = jsonToResponse(json);

person Hunsu    schedule 06.01.2015    source sumber
comment
Pertanyaan Anda membingungkan. Jadi semua respons memiliki variabel continueToken tetapi permintaan memiliki nama variabel berbeda untuk meneruskan continueToken? Tidak bisakah Anda mengambil token dari respons dan meneruskannya ke variabel yang tepat berdasarkan permintaan dan kemudian membuat serial ke json?   -  person Deepak Bala    schedule 06.01.2015


Jawaban (1)


hm.. Anda memiliki nama bidang dinamis, solusi anotasi tidak dapat berfungsi. Dengan asumsi tidak ada bidang JSON lain yang diakhiri dengan "lanjutkan" (yang berlaku dalam contoh Anda), Anda dapat mengikuti langkah-langkah berikut:

  1. Ulangi kunci JSON seperti pada postingan ini
  2. Gunakan field.getKey().endsWith("continue") untuk menemukan kunci yang Anda inginkan
  3. Ganti kunci di node JSON Anda menggunakan kode dari postingan ini dengan "continueToken"
  4. Sekarang ambil objek Response Anda
person Kostas Chalkias    schedule 06.01.2015