Как я могу объединить данные json с помощью jsonconvert.populateObject на словаре без перезаписи существующих свойств?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу объединить данные json с помощью jsonconvert.populateObject на словаре без перезаписи существующих свойств?

Сообщение Anonymous »

Я работаю над проектом, где мне нужно объединить данные JSON в существующий объект. У меня есть следующие классы: < /p>

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

public class ResourceDescriptor
{
public string Title { get; set; }
}

public class ResourceProperties
{
public string Quantity { get; set; }
}

public class Resource
{
public ResourceDescriptor descriptor { get; set; } = new();
public ResourceProperties properties { get; set; } = new();
}

public class Container
{
public Dictionary Resources { get; set; } = new();
}
< /code>
В моем основном методе я сначала десериализую некоторые JSON, которые заполняют свойство дескриптора: < /p>
string json1 = @"
{
""Resources"": {
""1"": {
""descriptor"": {
""Title"": ""Example Title""
}
}
}
}";

Container container = JsonConvert.DeserializeObject(json1);
< /code>
Затем я пытаюсь обновить существующий контейнер с помощью дополнительного JSON, который обеспечивает свойства: < /p>
string json2 = @"
{
""Resources"": {
""1"": {
""properties"": {
""Quantity"": ""100""
}
}
}
}";

JsonConvert.PopulateObject(json2, container);
Я ожидал, что после заполнения, container.resources ["1"] сохранит descriptor.title (

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

"Example Title"
) из первого JSON и иметь свойства. Однако, когда я запускаю код, кажется, что новый JSON перезаписывает мои существующие данные.Title: Example Title
Quantity:
< /code>
и после < /p>
Title:
Quantity: 100
< /code>
Вопросы: < /p>

Почему jsonConvert.PopulateObject перезаписывает существующий объект вместо объединения новых данных JSON с существующими Свойства? Новые свойства от второго JSON? /p>
Я попытался изменить настройки десериализации JSON, включая обработку справочника и нулевую обработку, но это не сработало. < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... ry-without
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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