Я работаю над проектом, где мне нужно объединить данные 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);
< /code>
Я ожидал, что после заполнения, контейнер.resources ["1"] сохранит дескриптор. ". Однако, когда я запускаю код, кажется, что новый JSON перезаписывает мои существующие данные.Title: Example Title
Quantity:
< /code>
и после < /p>
Title:
Quantity: 100
< /code>
Вопросы: < /p>
1. Почему JSonConvert.PopulateObject перезаписывает существующий объект вместо объединения новых данных JSON с существующими свойствами? < /Strong>
2. Как я могу объединить данные JSON, чтобы ранее существовавшие свойства (например, descriptor.title) оставались нетронутыми при добавлении новых свойств со второго JSON? Предложения о том, как добиться истинного поведения «слияния» с Newtonsoft.json, будут высоко оценены. Настройки, включая обработку ссылок и нулевую обработку, но это не сработало.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ry-without
Как я могу объединить данные json с помощью jsonconvert.populateObject на словаре без перезаписи существующих свойств? ⇐ C#
Место общения программистов C#
1739931917
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);
< /code>
Я ожидал, что после заполнения, контейнер.resources ["1"] сохранит дескриптор. ". Однако, когда я запускаю код, кажется, что новый JSON перезаписывает мои существующие данные.Title: Example Title
Quantity:
< /code>
и после < /p>
Title:
Quantity: 100
< /code>
Вопросы: < /p>
1. Почему JSonConvert.PopulateObject перезаписывает существующий объект вместо объединения новых данных JSON с существующими свойствами? < /Strong>
2. Как я могу объединить данные JSON, чтобы ранее существовавшие свойства (например, descriptor.title) оставались нетронутыми при добавлении новых свойств со второго JSON? Предложения о том, как добиться истинного поведения «слияния» с Newtonsoft.json, будут высоко оценены. Настройки, включая обработку ссылок и нулевую обработку, но это не сработало.
Подробнее здесь: [url]https://stackoverflow.com/questions/79450036/how-can-i-merge-json-data-using-jsonconvert-populateobject-on-dictionary-without[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия