.NET Framework Newtsonsoft json настроить необходимое сообщение об исключенииC#

Место общения программистов C#
Ответить
Anonymous
 .NET Framework Newtsonsoft json настроить необходимое сообщение об исключении

Сообщение Anonymous »

Предположим, у меня есть следующее определение класса

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

public class Person
{
[JsonProperty(Required = Required.Always)]
public string Name { get; set; }
}

И когда я попытаюсь создать экземпляр нового Person из следующего текста: "{}", я получу исключение

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

try
{
JsonConvert.DeserializeObject
("{}");
}
catch(Exception ex)
{
// ex.Message = 'Required property 'Name' not found in JSON. Path '', line 1, position 2.'
}
Как настроить это сообщение об ошибке? У меня есть несколько классов с несколькими свойствами в каждом классе, и я хотел бы упростить отправку этих ошибок обратно клиенту. . Что-то вроде

Невозможно создать человека, требуется «Имя».

Я не хочу отправлять клиенту внутренние исключения JSON. Я также попробовал собственный JsonConverter

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

public class Person
{
[JsonProperty(Required = Required.Always)]
[JsonConverter(typeof(MyCustomConverter))]
public string Name { get; set; }
}
но методы пользовательского преобразователя, такие как ReadJson, даже не вызываются, если свойство не существует. Обратите внимание, что в конкретном приложении я не вызываю JsonConvert.DeserializeObject самостоятельно, это автоматически делается в моих конечных точках API, поэтому такие решения, как

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

try
{
JsonConvert.DeserializeObject
(input);
}
catch(JsonException jex)
{
throw new JsonException("My custom message")
}
действительно бесполезны. Он также не масштабируется для каждого отдельного свойства во всех других классах.


Подробнее здесь: https://stackoverflow.com/questions/781 ... on-message
Ответить

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

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

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

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

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