2012-03-02 20 views
8

Bean kullanarak json serialization/deserialization ile ilgili sorularım var. Daha önce bunu yapmak için GSON'u kullandım, ama şimdi Jackson'a bağlı bir proje ile karşı karşıyayım ve elimde ne varsa yapabileceğim bir şey varsa, yeni bağımlılığı tanıtmamayı tercih ederim.Alan adı belirleme politikasını belirlemek için Jackson

Yani böyle bir fasulye var hayal:

class ExampleBean { 
    private String firstField; 
    private String secondField; 
    // respective getters and setters 
} 

Sonra Jackson bunu serializes:

ExampleBean bean; 
... 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(outStream, bean); 
: Yukarıdaki sonuç üretmek için aşağıdaki kodu kullanıyorum

{ 
    "firstField": "<first_field_value>", 
    "secondField": "<second_field_value>" 
} 

Ancak, aşağıdaki serileştirmeyi almak istiyorum: (beklediğim gibi):

{ 
    "first_field": "<first_field_value>", 
    "second_field": "<second_field_value>" 
} 

Ben kasten örnek basitleştirilmiş var, ama ben seri hale getirmek istediğiniz fasulye büyük hiyerarşi var ve tefrika özellikleri her zaman snake_style (yani alt çizgi ile) ve karşılık gelen fasulye alanlarında olması gerektiğini belirtmek istiyoruz her zaman deveCased olmalıdır. Bu tür alan/özellik adlandırma politikalarını uygulayabilmem ve bunları her alan için ilgili özniteliklere açıklama yapmadan kullanmamın bir yolu var mı?

ObjectMapper mapper = new ObjectMapper(); 
mapper.setPropertyNamingStrategy(
    PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); 
mapper.writeValue(outStream, bean); 

Umarım bu başka çok birine yararlı olduğu ortaya dönecek:

cevap

11

Ve evet ben (o arama 2 saat sonra ben onu bulmak sadece 30 dakika uzaklıkta olmuştu ortaya çıktı) bulundu .

+0

ObjectMapper böyle bir yöntem kümesine sahip görünmüyorPropertyNamingStrategy ... :( – stantonk

+0

@stantonk, yorumumu yazdığım zamanlardı. Görünüşe göre Jackson 1.9 için oradaydı. Ancak, en yeni Jackson'da eşdeğer bulamıyorum. Lütfen, eğer yaparsanız, buraya bir cevap yazınız ki böylece insanlar bu konuya başvurabilirler. –

+0

bunu anladım, jackson'un bir geçiş bağımlılığı yoluyla daha eski bir versiyonunu aldım ve IDE'm yanlış bir tane ithal etti. :-). – stantonk