Denetleyicimde nesneye JSON mesajını dönüştürmek için Spring'in MappingJacksonHttpMessageConverter kullanıyorum. json mesajı yerine bir dize içeriyorsaArrayList, String kullanarak String from Stringer
ArrayList olarak ilan edilir alanlar için<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="prefixJson" value="false" />
<property name="supportedMediaTypes" value="application/json" />
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
, şu istisna atılır:
:org.springframework.http.converter.HttpMessageNotReadableException:
Could not read JSON: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
örneği aşağıdaki sınıf tanımı olurdu
public class Product {
private String name;
private List<String> images;
}
gelen Json nerede:
{name:"Widget", images:"image1.jpg"}
Gördüğünüz gibi, görüntünün bir dizi olması beklenen bu durum istisnayı oluşturacaktır.
Biraz daha toleranslı olan özel bir serpanteyici yapmak isterim. Deserialization başarısız olursa, String'den tek bir elemanın bir ArrayList oluşturun. Bunu MappingJacksonHttpMessageConverter veya ObjectMapper uygulamasına nasıl enjekte edebilirim?
Her ArrayList alanını işaretlemek için ek açıklama kullanmak istemiyorum, böylece özel bir seri hale getirme kullanılabilir. Bu işlevi önceden oluşturmak için varsayılan serpantinin üstüne yazmanın bir yolunu arıyorum.
sen serisini çalışıyoruz orijinal dizesi nedir çözüldü Aşağıdaki eklenmesi? –
, {product: ["1234"]} – ltfishie
yerine {product: "1234"} olduğunu ve nasıl seri hale getirmeye çalıştığınızı söyleyin? bazı kod gönderebilir misin? –