System.text.json Contract ResolverC#

Место общения программистов C#
Ответить
Anonymous
 System.text.json Contract Resolver

Сообщение Anonymous »

Я реализовал модульный тест, чтобы вызвать конечную точку патча, используя «System.text.json» для сериализации данных и отправки его в качестве контента. Я всегда получал плохую просьбу, пока не узнал, что сериализатор инкапсулирует весь патч документ в список «Операции» и добавил свойство под названием «Contractresolver». < /P>
Моя работа была Используйте Newtonsoft.json Serializer, который, по крайней мере, по умолчанию, не добавляет дополнительное свойство и работает должным образом, поскольку API принимает JSondocumentPatch. JSON "Serializer работает таким образом, а не просто конвертируется в JSON, как Newtonsoft? Или, если можно что -то настроить, чтобы предотвратить это. Я не хочу использовать оба сериализатора в проекте ..
oh, и я использую .net6 с последними пакетами Nuget (до даты этого поста) < /p>
Я был документацией, и ничего не возникает в отношении этого.
Некоторый пример кода для сериализации: < /p>
var patchOperations = new JsonPatchDocument();
patchOperations.Replace(m => m.IntValue, 123);
patchOperations.Remove(m => m.StringValue);

var systemSerializer = JsonSerializer.Serialize(patchOperations);
var newtonSerializer = JsonConvert.SerializeObject(patchOperations);

Результаты:
systemserializer
{
"Operations":[
{
"value":123,
"OperationType":2,
"path":"/IntValue",
"op":"replace",
"from":null
},
{
"value":null,
"OperationType":1,
"path":"/StringValue",
"op":"remove",
"from":null
}
],
"ContractResolver":{

}
}

Newtonserializer
[
{
"value":123,
"path":"/IntValue",
"op":"replace"
},
{
"path":"/StringValue",
"op":"remove"
}
]


Подробнее здесь: https://stackoverflow.com/questions/716 ... t-resolver
Ответить

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

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

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

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

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