Я конвертирую из. NET CORE 2.2 в 3.1. Можно ли заставить контроллер использовать System.Text.Json
для сериализации и десериализации любого входящего запроса и ответа? В основном, когда приходит запрос, я хочу использовать System.Text.Json
, а когда ответ выходит, я хочу использовать System.Text.Json
. Если да, то как?
Причина для этого заключается в том, что Microsoft действительно выдвигает эту библиотеку в качестве замены Newtonsoft.Json
, так как она стала намного безопаснее и быстрее. Но я не могу найти никакой документации на страницах Microsoft, которая отражает это. Мне трудно, чтобы Microsoft не обновляла свой код для использования этой новой библиотеки.
ОБНОВЛЕНИЕ
Я не могу заставить System.Text.Json
связать модель путем анализа с application/vnd.api+json
- модель NULL. Он будет привязан только если я проанализирую, используя application/json
. Это проблематично c, поскольку для спецификации JSON: API требуется application/vnd.api+json
(см. Здесь: { ссылка }). Я попытался украсить контроллер [Consumes("application/vnd.api+json")]
, но это не работает.
Как заставить System.Text.Json
связывать модели, используя application/vnd.api+json
? Мое первоначальное предположение при задании этого вопроса было таким: NET Core 3.1 не использовал System.Text.Json
Поскольку никто не дал ответа, кроме нескольких комментариев, я решил расширить этот вопрос.
ChangePassword Модель:
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace ABC.Model.Clients
{
public class ChangePassword
{
public ChangePassword() { }
[Required]
[JsonPropertyName("old-password")]
public string OldPassword { get; set; }
[Required]
[JsonPropertyName("new-password")]
public string NewPassword { get; set; }
[Required]
[JsonPropertyName("confirm-password")]
public string ConfirmPassword { get; set; }
}
}
Почтальон запрос:
{
"data": {
"attributes": {
"old-password" : "**********",
"new-password" : "**********",
"confirm-password" : "**********"
},
"type": "change-passwords"
}
}