manyquestions, jackson ile ObjectId
'dan String
'a dönüştürme ile ilgilidir. Tüm cevaplar ya kendi JsonSerializer<ObjectId>
'u oluşturmayı ya da alanını @JsonSerialize(using = ToStringSerializer.class)
ile ek açıklama yapmayı önerir. Ben jackson dönüştürmek isteyenYuvalanmış ObjectId, Jackson ile String'e nasıl serileştirilir?
class Whatever {
private Map<String, Object> parameters = new HashMap<>();
Whatever() {
parameters.put("tom", "Cat");
parameters.put("jerry", new ObjectId());
}
}
:
Ancak, ben bir bazenObjectIds
içeren haritayı, yani var
{
"parameters": {
"tom": "cat",
"jerry": "57076a6ed1c5d61930a238c5"
}
}
Ama olsun:
{
"parameters": {
"tom": "cat",
"jerry": {
"date": 1460103790000,
"machineIdentifier": 13747670,
"processIdentifier": 6448,
"counter": 10631365,
"time": 1460103790000,
"timestamp": 1460103790,
"timeSecond": 1460103790
}
}
}
Dönüştürmeyi 0 (İlkbahar) olarak kaydettim
public class WebappConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder
.serializerByType(ObjectId.class, new ToStringSerializer());
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(builder.build());
converters.add(converter);
}
}
ve birinci düzey ObjectIds
doğru çevrilir. Jackson da iç içe olanlar dönüştürmek nasıl? Bu harita için özel dönüştürücü yazmalı mıyım? Bu Map
'un birden çok kez iç içe yerleştirilebileceğini (yani başka bir harita içerebileceğini) unutmayın. Jackson her gördüğünde ObjectId
'u String
'a dönüştürmek istiyorum.
imal * değil * çalışma örneği] (https://github.com/fracz/stackoverflow-problems/tree/jackson-nested-objectid-tostring) ve benim için de doğru şekilde eşlenmiştir. Problemi daha dikkatli araştırmam gerekiyor. Bunu kontrol ettiğiniz için teşekkür ederim, bir şey bulursam bir güncelleme gönderirim. – fracz
Şimdi uygulamanın başka bir yerinde bir hata olduğunu doğrulayabilirim. “Harita”, Nesne eşleştiricisinin başka bir örneği tarafından, Bahar bağlamında kullanılan yerine krikondan dönüştürüldü. Çalışamadığı için 'ObjectId' yapılandırması uygulanmadı. Zorlandığınız için minnettar olduğum için teşekkür ederim ve hatam için üzgünüm! – fracz