Как сопоставить столбцы MySQL JSON с помощью Dapper

.net c# dapper json mysql

Вопрос

У меня есть таблица в базе данных MySQL, которая содержит столбец данных JSON. Можно ли получить данные JSON, хранящиеся в этом столбце, и сопоставить мой класс c # с помощью Dapper? Ниже приведен пример JSON о том, как данные хранятся в столбце.

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

Я хочу, чтобы данные были сопоставлены с типом List<MyObject> в C #.

Популярные ответы

Вы регистрируете ITypeHandler для List<MyObject> или независимо от типа свойства.

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());

После этого, если у вас есть имя столбца, которое сопоставляется с свойством типа List<MyObject> оно будет сериализоваться и десериализоваться должным образом.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow