System.Text.Json не соблюдает правила NRT и не дает сбоевC#

Место общения программистов C#
Anonymous
System.Text.Json не соблюдает правила NRT и не дает сбоев

Сообщение Anonymous »

В настоящее время я работаю над двумя методами интеграции: один через HTTP (конечная точка API), а другой через события (Azure Service Bus). Оба они используют одну и ту же модель.
Проблема в том, что при вызове API и передаче значения null в свойство, не допускающее значения NULL, он возвращает ошибку 400, указывающую, что поле является обязательным. Однако когда я пытаюсь десериализовать эту модель с помощью System.Text.Json.JsonSerializer.Deserialize, она проходит без проблем.
Почему поведение этих двух моделей различается?
Я использую .NET 6
Вот небольшой пример кода

Код: Выделить всё

using System.Diagnostics;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Example;

public class Program
{
public static void Main(string[] args)
{
string json = "{\"name\": null}";

// I would love this to throw an exception because Name should not be null.
SomeClass sc = JsonSerializer.Deserialize(json)!;
Debug.Assert(sc.Name != null);
}
}

public class SomeClass
{
public string Name { get; }
}
Я ожидаю, что в обоих случаях выдаст ошибку

Подробнее здесь: https://stackoverflow.com/questions/785 ... oesnt-fail

Вернуться в «C#»