Я отправляю этот json в asp.net web api action.Deserialize массив JSON с пропущенными элементами
{
"keys": {
"2a":["C",,,,,"0",,"0"]
}
}
Этот JSON является POST-е изд именно так, как это в теле запроса на мое действие asp.net 4.5 веб-апи 2.
[RoutePrefix("api/TImport")]
[Authorize]
public class TImportController : ApiController
{
[Route("")]
[HttpPost]
public async Task<TImportResult> Post(TImportParameters parameters)
{
// parameters.Keys["2a"] got deserialized as array[3] {"C","0","0" } :((
return await new TImport().RunAsync(parameters);
}
Что происходит, что 2а десериализируется в массив из 3 элементов вместо 8 элементов с нулевыми или пустыми элементами 2 до 6 и 7.
Что я могу сделать, чтобы desserialize пропущенных элементов массива, как defaults (nulls или пустые строки)?
какую библиотеку вы используете для десериализации? Newtonsoft имеет специальные функции, такие как nullhandling и missingmemberhandling, может стоить проверить –
Я использую стандартную библиотеку, которая используется для привязки аргументов в asp mvc. Это JsonMediaTypeFormatter, основанный на http://json.codeplex.com/ Я даже не могу узнать, является ли эталонное поведение для json или предметной библиотеки. – doker
это newtonsoft, проверьте свойство NullValueHandling в классе JsonSerializer, которое вы можете установить для Include и попробуйте –