Как заполнить существующий объект с помощью JsonSerializer из System.Text.Json?C#

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

Сообщение Anonymous »

Я готовлю переход с ASP.NET Core 2.2 на 3.0.
Поскольку я не использую более продвинутые функции JSON (но, возможно, одну из описанных ниже), и 3.0 теперь поставляется со встроенным пространством имен/классами для JSON, System.Text.Json, я решил посмотреть, смогу ли я отказаться от предыдущего Newtonsoft.Json по умолчанию.

Обратите внимание, Я знаю, что System.Text.Json не заменит полностью Newtonsoft.Json.
Мне удалось это сделать везде, например< /p>

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

var obj = JsonSerializer.Serialize(jsonstring);

var jsonstring = JsonSerializer.Serialize(obj);
за исключением одного места, где я заполняю существующий объект.
С помощью Newtonsoft.Json это можно сделать

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

JsonConvert.PopulateObject(jsonstring, obj);
Встроенное пространство имен System.Text.Json имеет несколько дополнительных классов, таких как JsonDocument, JsonElement и Utf8JsonReader, хотя я не могу найти ни одного, который бы принимал существующий объект в качестве параметра.
У меня недостаточно опыта, чтобы понять, как использовать существующие объекты.
Может быть быть возможной будущей функцией в .Net Core (спасибо Мустафе Гюрселю за ссылку), а пока (а что, если этого не произойдет),...
...я сейчас Интересно, можно ли добиться чего-то подобного тому, что можно сделать с помощью PopulateObject?
Я имею в виду, возможно ли это с любым другим System.Text.Json, чтобы выполнить то же самое, и обновить/заменить только набор свойств?,... или некоторые другой умный обходной путь?

Вот пример ввода/вывода того, что я ищу, и он должен быть общим, поскольку объект передается в десериализацию метод имеет тип ). У меня есть две строки JSON, которые нужно проанализировать в объект, где для первой установлены некоторые свойства по умолчанию, а для второй - некоторые, например
Примечание: значение свойства может быть любым тип, отличный от строки.
Строка Json 1:

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

{
"Title": "Startpage",
"Link": "/index"
}
Строка Json 2:

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

{
"Head": "Latest news",
"Link": "/news"
}
Используя две строки JSON, приведенные выше, мне нужен объект, в результате которого будет:

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

{
"Title": "Startpage",
"Head": "Latest news",
"Link": "/news"
}
Как видно из примера выше, если свойства во втором имеют значения/установлены, они заменяют значения в первом (как в случае с «Заголовком» и «Ссылкой»), если нет, существующие значение сохраняется (как и в случае с «Названием»)

Подробнее здесь: https://stackoverflow.com/questions/568 ... -text-json
Ответить

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

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

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

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

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