Saltar al contenido

¿No se puede deserializar JSON como tipo abstracto?

Nuestro team especializado pasados varios días de investigación y de recopilar de datos, hemos dado con la respuesta, nuestro deseo es que te sea de gran utilidad para tu plan.

Solución:

Traté de encontrar una solución para su problema, pero creo que la mejor es la suya: deje que el cliente implemente un captador con el nombre de su clase y páselo a su método como lo hizo la primera vez. Porque al final del día, no importa lo que quieras, JSON necesita absolutamente el nombre de la clase para deserializar un String en esa clase.

Si realmente quiere hacerlo más simple, cree una clase abstracta con el método listo para usar

public String Name()
    return String.valueOf(this).split(':')[0];

y dejar que el cliente amplíe la clase, centrándose en el método del mango…

EDITAR

Si realmente desea eliminar el parámetro de nombre, puede crear un getter real en lugar del método Name() que escribí:

public abstract class AbstractFutureHandler
    public String className get 
        return String.valueOf(this).split(':')[0];
    

y en la clase FutureManager:

@future
private static void Execute(String jsonHandle) 
    String typeName = (String) ( (Map

Y finalmente

public class UpdateSomeRecords_future extends AbstractFutureHandler implements FutureHandler 
 /* ... */ 

Un poco pesado, hace que JSON se deserialice dos veces, pero bueno, Salesforce tiene servidores, hagamos que funcionen;)

Si desea deserializar en una interfaz, aún debe pasar un tipo concreto (la implementación real). En este caso, lo siguiente debería funcionar bien:

FutureManager.execute('...', UpdateSomeRecords_future.class);
//                             ^ Concrete implementation type

Recuerda que tienes la opción de agregar una reseña si diste con el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *