Soru Gson kullanarak serileştirme sırasında varsayılan değeri bir değişkene ayarlama


Dönüştürmeye çalışıyorum JSON Java nesnesine. Bir çiftin belirli bir değeri olduğunda nullbazı varsayılan değerlerle ayarlanmalıdır.

İşte benim POJO:

public class Student {      
    String rollNo;
    String name;
    String contact;
    String school;

    public String getRollNo() {
        return rollNo;
    }
    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
}

Örnek JSON nesnesi:

{
  "rollNo":"123", "name":"Tony", "school":null
}

Eğer okul ise nullBunu varsayılan değer olarak yapmalıyım "school":"XXX". Bunu nasıl yapılandırabilirim? GSON nesneleri serpiştirirken?


18
2018-05-13 13:28


Menşei




Cevaplar:


Eğer null JSON'da, Gson POJO'da ayarlayabileceğiniz herhangi bir varsayılan değeri geçersiz kılacak. Sen could bir problem yaratmaya çalışmak özel deserializerama bu durumda aşırı bir olasılık olabilir.

Bence en kolay olanı (ve kullanım durumunuza göre tartışmasız en iyisi) yapması gereken şey Yavaş yüklenme. Örneğin:

private static final String DEFAULT_SCHOOL = "ABC Elementary";
public String getSchool() {
    if (school == null) school == DEFAULT_SCHOOL;
    return school;
}
public void setSchool(String school) {
    if (school == null) this.school = DEFAULT_SCHOOL;
    else this.school = school;
}

Not: Bu çözümdeki en büyük sorun, Varsayılanları değiştirmek için kodu değiştirmeniz gerektiğidir. Varsayılan değerin özelleştirilebilir olmasını istiyorsanız, yukarıda belirtildiği gibi özel seri hale getirici ile gitmelisiniz.


14
2018-05-13 15:30



çok teşekkürler. Güzel karar - Anton Shkurenko


Bunu yapmanın yolunun, hata ayıklama yapıcınızın varsayılan değerlerini doldurması için yazmak ya da özel örnek yaratıcısı. Ardından, seri hale getirici, JSON nesnesinde serileştirilmiş olan tüm özniteliklerin varsayılan değerlerini değiştirmelidir.


10
2018-05-13 13:41





Sadece null için kontrol eden evrensel bir işlev yapabilirsiniz.

model.SchoolName= stringNullChecker(model.SchoolName);

public static String stringNullChecker(String val) {
        if (null == val) val = "";
        return val;
}

1
2017-09-01 07:37