Cómo mapear la columna MySQL JSON usando Dapper

.net c# dapper json mysql

Pregunta

Tengo una tabla en la base de datos MySQL que contiene una columna de tipo de datos JSON. ¿Es posible recuperar los datos JSON almacenados en esa columna y asignarlos a mi clase c # usando Dapper? A continuación se muestra un JSON de muestra sobre cómo se almacenan los datos en la columna.

[
        {
            "ServerName": "",
            "Priority": 1,
            "FilesystemBasePath": "",
            "IsAvailable": 1,
            "ApplicationDocumentType": ""
        },
        {
            "ServerName": "",
            "Priority": 2,
            "FilesystemBasePath": "",
            "IsAvailable": 1,
            "ApplicationDocumentType": ""
        }
]

Quiero que los datos se List<MyObject> a un tipo List<MyObject> en C #.

Respuesta popular

Registra un ITypeHandler para List<MyObject> , o cualquiera que sea el tipo de propiedad.

public class MyClass
{
    public List<MyObject> MyObjects {get; set;
}

public class JsonTypeHandler: SqlMapper.ITypeHandler
{
   public void SetValue(IDbDataParameter parameter, object value)
   {
       parameter.Value = JsonConvert.SerializeObject(value);
   }

   public object Parse(Type destinationType, object value)
   {
       return JsonConvert.DeserializeObject(value as string, destinationType);
   }
}

SqlMapper.AddTypeHandler(typeof(List<MyObject>),new JsonTypeHandler());

Después de eso, si tiene un nombre de columna que se asigna a una propiedad de tipo List<MyObject> se serializará y se deserializará correctamente.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué