Nasıl json seri hale getirici döngüsel başvuru hazırda iki yönlü eşleme kaynaklanan sorunları çözmek için?
POJO seri hale getirmek için bir seri hale getirici JSON yazıyorum ama döngüsel başvuru sorunu kalmış. Hazırda bekleme çift yönlü bir-çok ilişkisi, ebeveyn referanslar çocuk ve çocuk başvurular üst sırt ve seri hale getirici ölür burada. (örnek kod aşağıda)
Nasıl bu döngüyü kırmak için? Sahibi nesne bir yerde kendi sahibi kendi hiyerarşisi içinde kendisi var olup olmadığını görmek için bir nesne ağaç alabilir miyiz? Eğer başvuru dairesel olacaksa bulmak için başka yol yok mu? ya da bu sorunu çözmek için başka bir fikir?
CEVAP
Özelliğini kullanarak Google JSON sayı bu tür işlemek İçin güveniyor
Aşağıdaki gibi A ve B sınıfı arasında iki yönlü bir ilişki varsayalım
public class A implements Serializable {
private B b;
}
Ve B
public class B implements Serializable {
private A a;
}
Şimdi şöyle (Dikkat edin . özel bir Gson nesne almak İçin GsonBuilder ^strong>setExclusionStrategiesyöntem)
Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy() {
public boolean shouldSkipClass(Class<?> clazz) {
return (clazz == B.class);
}
/**
* Custom field exclusion goes here
*/
public boolean shouldSkipField(FieldAttributes f) {
return false;
}
})
/**
* Use serializeNulls method if you want To serialize null values
* By default, Gson does not serialize null values
*/
.serializeNulls()
.create();
Şimdi dairesel referansımız
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
String json = gson.toJson(a);
System.out.println(json);
GsonBuilder sınıf bir göz atın
Nasıl üstesinden gelmek için "dat...
Nasıl JSON nesneler üzerinde __type öz...
Nasıl Jackson JSON işlemciye sahip Jod...
Nasıl JAXB nesnelerin listesini JSON i...
Seri hale getirilirken jQuery JSON içi...