Соблюдает ли Amazon.Lambda.Serialization.Json.JsonSerializer уважает JsonIgnore

#c# #asp.net-core #aws-lambda

#c# #asp.net-core #aws-lambda

Вопрос:

Я получаю сообщение об ошибке во время десериализации с использованием ASPNET Core на AWS Lambda с помощью C #. У меня есть атрибут below в моей лямбда-сборке:

 [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
 

У меня есть атрибут [JsonIgnore] для определенных свойств передаваемых объектов (классов). Если эти свойства вызываются в их состоянии, они выдают исключение.

Исключение возникает при передаче объекта на контроллер ядра ASPNET (или при возврате значения из контроллера).

Моя теория заключается в том, что атрибут [JsonIgnore] не соблюдается. Я не могу найти никакой документации или других тем SO, говорящих об этом.

Можете ли вы подтвердить / опровергнуть мою теорию? Есть ли какая-либо документация по этому поводу? Кто-нибудь может придумать обходной путь?

Комментарии:

1. Похоже, они используют using Newtonsoft.Json; github.com/aws/aws-lambda-dotnet/blob/master/Libraries/src /… так что он должен поддерживать [JsonIgnore]

2. Да, это то, что я подумал, но это не соответствует [JsonIgnore]

Ответ №1:

Источник для Amazon.Lambda.Serialization.Json.JsonSerializer указывает, что это «Пользовательская реализация ILambdaSerializer, которая использует Newtonsoft.Json 9.0.1», который поддерживает атрибут JsonIgnoreAttribute ( [JsonIgnore] ).

Объявление о поддержке AWS Lambda для .NET Core 3.1 представляет (и рекомендует) новый сериализатор Lambda JSON от Amazon.Lambda.Serialization.SystemTextJson.По умолчанию Lambda.Serialization.JsonSerializer, использующий System.Text.Json, встроен в .NET Core framework, который также поддерживает атрибут JsonIgnoreAttribute ( [JsonIgnore] ).