Я использую Dapper для чтения данных с SQL Server.У меня есть оператор SQL, который возвращает длинный результат Json, но проблема заключается в том, что этот результат разбивается на 3 строки по 2033 символа в каждой строке, тогда Dapper не может проанализировать возвращенный результат, потому что это недопустимый Json.
Как предотвратить это расщепление или как заставить Dapper справиться с ним?
Это мой код:
SqlMapper.ResetTypeHandlers();
SqlMapper.AddTypeHandler(new JsonTypeHandler<List<Product>>());
const string sql = @"SELECT
*,
(SELECT * FROM Balance b
WHERE p.SKU = b.SKU
FOR JSON PATH) AS [Balances]
FROM Product p
WHERE SKU IN @SKUs
FOR JSON PATH";
var connection = new SqlConnection("myconnection");
return connection.QuerySingleAsync<List<Product>>(sql, new{SKUs = new[] {"foo", "bar"}} });
И код TypeHandler:
public class JsonTypeHandler<T> : SqlMapper.TypeHandler<T>
{
public override T Parse(object value)
{
return JsonConvert.DeserializeObject<T>(value.ToString());
}
public override void SetValue(IDbDataParameter parameter, T value)
{
parameter.Value = JsonConvert.SerializeObject(value);
}
}
А вот как я запускаю этот SQL в DataGrip Редактировать: Вот сообщение об ошибке:
Newtonsoft.Json.JsonSerializationException: неожиданный конец, когдадесериализация объекта.Путь '[0]. Балансы [4] .WarehouseId', строка 1, позиция 2033.