System.Text.Json Объединить два объекта - PullRequest
1 голос
/ 04 ноября 2019

Возможно ли объединить два объекта json, как это, с System.Text.Json?

Объект 1

{
   id: 1
   william: "shakespeare"
}

Объект 2

{
   william: "dafoe"
   foo: "bar"
}

Объект результата

{
    id: 1
    william: "dafoe"
    foo: "bar"
}

Я могу добиться этого с помощью newtonsoft.json, как это

var obj1 = JObject.Parse(obj1String);
var obj2 = JObject.Parse(obj2String);

obj1.Merge(obj2);
result = settings.ToString();

Но есть ли способс System.Text.Json?

1 Ответ

3 голосов
/ 07 ноября 2019

Начиная с .Net Core 3.0 объединение объектов JSON не реализовано System.Text.Json:

  • Нет Merge или Populate методы для JsonDocument.

  • Нет методов Merge или Populate для JsonSerializer.

В общем, JsonDocument - только для чтения . Это

Предоставляет механизм для проверки структурного содержимого значения JSON без автоматического создания экземпляров значений данных.

Как таковой, он не предназначендля поддержки изменения значения JSON любым способом, включая слияние в него другого значения JSON.

В настоящее время существует запрос на расширение для реализации изменяемой объектной модели документа JSON: Проблема # 39922: Доступный для записи JsonDOM . Он имеет связанную спецификацию Объектная модель документа (DOM) для записи в формате JSON для System.Text.Json. Если бы это усовершенствование было реализовано, слияние документов JSON стало бы возможным. Вы можете добавить проблему, запрашивающую функциональность, эквивалентную JContainer.Merge(), со ссылкой на проблему # 39922 в качестве предварительного условия.

...