2016-04-14 21 views
0

ben REST WebService yoluyla geçirilen bir JSON veri var:Jackson Haritacı: Java Singleton sınıfına JSON nesnesi dönüştürme yapılamadı

"dimension": { 
    "@type": "com.example.multi.MultiDimension", 
    "listId": "tempListId1", 
    "key": "PERN", 
    "displayName": "Personal" 
    } 

Şimdi, çok boyutlu yani özel yapıcı olan bir Singleton sınıf vardır . Yani Jackson kamu kurucuyu bulamadı ve ayrıştırma hatası veriyordu.

No suitable constructor found for type [simple type, class com.example.multi.MultiDimension]: can not instantiate from JSON object (need to add/enable type information?)\n at [Source: [email protected]; line: 8, column: 9] 

O zaman ben de çok boyutlu bir sınıfta bir kamu yapıcı eklendi ve beklendiği gibi çalıştı.

Benim endişem, Singleton sınıftan ben açık yapılan bu hâlâ sınıftan getInstance() yani yöntem adı belirterek sınıfını eşleyebilir bir Singleton Sınıf ve Jackson Eşleştiricisi'ni olabilir onların herhangi bir şekilde olduğu

+0

i özel –

+1

Sen 'getInstance()' yöntemine '@ JsonCreator' kullanabilirsiniz değil boş yüklenici ihtiyaç hatırladım. – dambros

+0

Burada yanlış bir şeyler mi düşünüyorsun? Bir nesneye serileştirilmesi gereken gelen veri, tekil olarak okunmamalıdır. Makul bir kullanım durumu görmek zor. Eğer nesnelerin tekil olarak geçirilmesini isterim, önce bunu bir veri aktarım nesnesine atayacağım, daha sonra tekil olarak kapsam ile ilgili olarak girilecektir. – Lmickos

cevap

1

yapabilirsiniz jsonCreator kullanın ve paramtere bunun gibi iletilebilir.

@JsonCreator 
public static MultiDimension getInstance(@JsonProperty("key") String key) {...}