Estoy tratando de ordenar un objeto JSON en una clase contenedora que contiene un objeto genérico, así como información adicional sobre la firma del objeto.Marshaling JSON y Generics en Java con Spring MVC
public class Signable<T> {
private T object;
private String signature;
public class Signable() {
generateSignature();
}
/* Getters and setters */
}
la clase contenedora funciona bien siempre que construyo con el objeto ya creado, y es capaz de producir el json deseada
@RequestMapping(value="/test/json/return",method=RequestMethod.GET)
public @ResponseBody Signable<Cart> getTest()
{
Cart cart = new Cart();
// populate cart with OrderItems ...
Signable<Cart> sign = new Signable<Cart>();
sign.setObject(cart);
return sign;
}
que es capaz de generar la salida esperada
{
"object":{
"orderItems":[
{
"id": "****",
"desc": "asdlfj",
"price": 25.53
}
]
},
"signature":"s9d94f9f9gdfg67d8678g6s87d6f7g6";
}
Cual es el formato que quiero. Sin embargo, cuando se trata de reunir la misma JSON generado a partir pueden firmar de nuevo en pueda firmarse, recibo el siguiente error:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to Cart
Por alguna razón que no es capaz de determinar que "objeto" en el JSON debe correlacionarse con el tipo of Cart (simplemente se establece como LinkedHashMap), aunque está especificado en el encabezado del método.
@RequestMapping(value="/test/json/post",method=RequestMethod.POST)
public @ResponseBody Signable<Cart> postTest(@RequestBody Signable<Cart> sign)
¿Hay una manera de indicar explícitamente de qué tipos de objetos que desea generar desde el JSON para insertar en lugar de un genérico?
Cualquier ayuda sería muy apreciada.
Gracias.
Esto es lo que acabé teniendo que hacer. ¡Gracias! –
Esta es, de lejos, la solución más simple – Chepech