Возникла проблема, когда мой объект сериализуется с использованием Newton, где одно из свойств представляет собой строку, содержащую дробные значения, такие как 1/2 ", 1/4" , et c ...
После сериализации я передаю переменную в SQL серверную хранимую процедуру, которая использует OPEN JSON.
Кажется, что двойные кавычки в значении дроби не экранируются должным образом, так как они не соответствуют формату JSON. При отладке я вижу ниже, что могло бы показаться, что "в дробном значении не экранировано должным образом.
Немного новичок в некоторых сериализациях, поэтому может понадобиться небольшая помощь. Если я удалю второй "\" из значения дроби, он будет работать нормально.
public partial class TblEcr
{
public int Number { get; set; }
public string Notes { get; set; }
}
public JsonResult OnPostUpdate([DataSourceRequest] DataSourceRequest request, TblEcr ecr)
{
_context.TblEcr.Where(x => x.Number == ecr.Number).Select(x => ecr);
try
{
if (ModelState.IsValid)
{
string ecrJson = JsonConvert.SerializeObject(ecr);
var param = new SqlParameter[] {
new SqlParameter() {
ParameterName = "@json",
SqlDbType = System.Data.SqlDbType.VarChar,
Size = 8000,
Direction = System.Data.ParameterDirection.Input,
Value = ecrJson
},
new SqlParameter() {
ParameterName = "@Status",
SqlDbType = System.Data.SqlDbType.Bit,
Direction = System.Data.ParameterDirection.Output
//,Value = 10
},
new SqlParameter() {
ParameterName = "@ErrorDetails",
SqlDbType = System.Data.SqlDbType.VarChar,
Size =8000,
Direction = System.Data.ParameterDirection.Output,
}};
int affectedRows = _context.Database.ExecuteSqlCommand("dbo.usp_UpdateECR @json, @Status, @ErrorDetails out", param);
}
}
catch (Exception ex)
{
return new JsonResult(ex.Message);
}
return new JsonResult(new[] { ecr }.ToDataSourceResult(request, ModelState));
}