Как настроить JsonSerializerOptions по умолчанию (System.Text. Json) для использования Azure функцией v3? - PullRequest
2 голосов
/ 07 марта 2020

У меня есть набор Azure функций v3, работающих на. net core 3.1.

У меня есть пользовательская конфигурация JsonSerializerOptions, которую я хочу, чтобы мои функции автоматически использовали при де / сериализации данных.

Вопрос

Как я могу настроить мои Azure функции, чтобы они могли использовать мой экземпляр System.Text.Json.JsonSerializerOptions по умолчанию?

Обновление 1

Следуя совету @sellotape, я обнаружил следующую документацию, относящуюся к классу JsonResult:

JsonResult documentation

Проблема заключается в том, что мой экземпляр JsonResult не имеет этого свойства объекта типа ; он только принимает экземпляр JsonSerializerSettings.

Обновление 2

Я все еще получаю следующую ошибку, и я не уверен, откуда исходит Newtonsoft:

Microsoft.AspNetCore.Mvc.NewtonsoftJson: Property 'JsonResult.SerializerSettings' must be an instance of type 'Newtonsoft.Json.JsonSerializerSettings'.

1 Ответ

2 голосов
/ 07 марта 2020

Получается Я пропустил шаг при обновлении моих Azure Функции с v2 до v3. Чтобы это работало, мне пришлось добавить фреймворк Microsoft.AspNetCore.App в мой csproj. В противном случае мой проект продолжал ссылаться на JsonResult из Microsoft.Aspnet.Mvc.Core v2.XX, который не поддерживает System.Text.Json.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <!-- ADD THESE LINES -->
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

</Project>

Затем я смог указать свой собственный экземпляр JsonSerializerOptions следующим образом:

return new JsonResult(<ContractClass>, NSJsonSerializerOptions.Default)
{
    StatusCode = StatusCodes.Status200OK
};

, где NSJsonSerializerOptions.Default - это статический c экземпляр JsonSerializerOptions.

...