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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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