Эффективное удаление вложенных вложенных свойств при десериализации JSON для C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Эффективное удаление вложенных вложенных свойств при десериализации JSON для C#

Сообщение Anonymous »

Как новичок в .NET, я учусь работать с десериализацией JSON в C#. Как я могу эффективно десериализовать массив объектов JSON с вложенными свойствами в список экземпляров C#, эффективно обрабатывая процесс удаления вложенности?
У меня есть массив JSON, представляющий список объектов с вложенными свойствами, например:
[
{"name":"apple","properties":{"color":"red","flavor":"sweet"}},
{"name":"orange","properties":{"color":"orange","flavor":"sour"}}
]

Я хочу десериализовать этот JSON в список объектов C#. Класс C# выглядит следующим образом:
public class Fruit
{
public string Name { get; set; }
public string Color { get; set; }
public string Flavor { get; set; }
}

Важно отметить, что структура объекта C# (Fruit) отличается от структуры объекта JSON. В частности, объект C# не имеет переменной «свойства».
Есть ли более эффективный способ добиться этого, чем вручную перебирать элементы массива JSON и присваивать значения объектам Fruit?
Мой код:
using System;
using System.Collections.Generic;
using System.Text.Json;

public class Fruit
{
public string Name { get; set; }
public string Color { get; set; }
public string Flavor { get; set; }
}

class Program
{
static void Main()
{
string json = "[{\"name\":\"apple\",\"properties\":{\"color\":\"red\",\"flavor\":\"sweet\"}},{\"name\":\"orange\",\"properties\":{\"color\":\"orange\",\"flavor\":\"sour\"}}]";

// Deserialize into a list of Fruit objects
List fruits = new List();

var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};

var jsonObjects = JsonSerializer.Deserialize(json, options);

foreach (var jsonObject in jsonObjects)
{
var fruit = new Fruit
{
Name = jsonObject.GetProperty("name").GetString(),
Color = jsonObject.GetProperty("properties").GetProperty("color").GetString(),
Flavor = jsonObject.GetProperty("properties").GetProperty("flavor").GetString()
};

fruits.Add(fruit);
}

// Print the fruits
foreach (var fruit in fruits)
{
Console.WriteLine("Name: " + fruit.Name);
Console.WriteLine("Color: " + fruit.Color);
Console.WriteLine("Flavor: " + fruit.Flavor);
Console.WriteLine();
}
}
}


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

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

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

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

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

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

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