JsonConverter не работает с привязкой модели - PullRequest
0 голосов
/ 09 февраля 2019

Я получил следующую модель

public class SignDocumentsModel
{
    [JsonProperty(ItemConverterType = typeof(BinaryConverter))]
    public byte[][] Documents { get; set; }

    public bool Detached { get; set; }
}

и код контроллера

[HttpPost]
[Route("{requestId}/sign")]
public Task<IHttpActionResult> SignDocuments([FromUri] Guid requestId, SignDocumentsModel parameters)
{
    return SomeKindOfProcessing(requestGuid, parameters);
}

Теперь, когда я выполняю запрос с почтальоном

POST
Content-Type: application/json
{
    "Detached": "true",
    "Documents": [
        "bG9weXN5c3RlbQ=="
    ]
}

IПредположим, что свойство Documents должно быть заполнено байтовыми массивами, декодированными из строк Base64, размещенных в содержимом запроса, хотя на самом деле свойство является пустым (в случае, если его тип в модели равен List<byte[]> или byte[][], и null в случае IEnumerable<byte[]>).

Почему JsonConverter не вызывается при десериализации тела запроса во время привязки модели?Как это можно исправить?

1 Ответ

0 голосов
/ 09 февраля 2019

Вы пытались удалить [JsonProperty(ItemConverterType = typeof(BinaryConverter))]?

В моей тестовой настройке модель успешно связывается после того, как я удалил этот атрибут.

Редактировать: немного больше информации ...

Согласно Руководству по сериализации Json.NET byte[] будет сериализовано в строку base64 по умолчанию.Судя по исходному коду , похоже, что BinaryConverter предназначен для использования с System.Data.Linq.Binary или System.Data.SqlTypes.SqlBinary, а не byte[].

...