System.Text.JsonSerializer неправильно десериализует объект в строкуC#

Место общения программистов C#
Anonymous
System.Text.JsonSerializer неправильно десериализует объект в строку

Сообщение Anonymous »

У меня есть следующий код:

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

if (response.StatusCode == HttpStatusCode.Conflict)
{
var error = JsonSerializer.Deserialize(content, new JsonSerializerOptions(JsonSerializerDefaults.Web));

var metaData = error.Error.MetaData;    // issue is here

if (error.Error.ErrorCode == 35)
OrderThrowHelper.ThrowException(ExceptionCodeType.BusinessError, error.Error.Message, error.Error.MetaData);
}
А это класс модели ошибок:

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

public class ApiErrorResult
{
public int ErrorCode { get; set; }

public ServiceCodeType ServiceCode { get; set; }

public string Message { get; set; }

public object MetaData { get; set; }   // NOTE THAT
}
Содержимое ответа:

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

{
"IsSuccess": false,
"Error": {
"ErrorCode": 48,
"ServiceCode": 1,
"Message": "Business exception occurred",
"MetaData": "تست"
},
"StatusCode": 409
}
Но значение десериализованного error.Error.MetaData:

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

"MetaData":
{
"ValueKind": 3
}
Когда я меняю System.Text.Json на Newtonsoft.Json, метаданные успешно десериализуются.
Почему это происходит с System.Text.Json?

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