@almenovr

Как создавать несколько объектов класса в цикле?

Имеется класс для формирования JSON
public class TriggerData
{
	public List<ПартнерАдреса> партнерАдреса { get; set; } = new List<ПартнерАдреса>();
}

public class ПартнерАдреса
{
	public string тип { get; set; }
	public string страна { get; set; }
	public string регион { get; set; }
	public string город { get; set; }
	public string представление { get; set; }
}


Как выводить несколько экземпляров ПартнерАдреса в цикле?

в коде
партнерАдреса = new List<ПартнерАдреса>()
{					
	new ПартнерАдреса() {
		тип = "1",
		страна = "2",
		регион = "3",
		город = "4",
		представление = "5"
	}
}
  • Вопрос задан
  • 645 просмотров
Пригласить эксперта
Ответы на вопрос 3
samodum
@samodum
Какой вопрос - такой и ответ
1С-ника видно сразу, бедняга.
Несколько экземпляров выводи в цикле
Ответ написан
Casper-SC
@Casper-SC
Программист (.NET)
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Чтение JSON из файла и десериализация.
            string pathToFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PartnerData.json");
            string jsonText = File.ReadAllText(pathToFile, Encoding.UTF8);
            var parterAddressesFromFile = JsonSerializer.Deserialize<TriggerData>(jsonText);

            // Вывод на консоль.
            Display(parterAddressesFromFile);

            // Создание нового экземпляра класса TriggerData и его заполнение данными.
            var data = new TriggerData()
            {
                PartnerAddresses = new List<PartnerAddress>()
                {
                    new PartnerAddress()
                    {
                        Type = "Тип 0001",
                        Country = "Страна 0001",
                        Region = "Регион 0001",
                        City = "Город 0001",
                        Presentation = "Представление 0001",
                    },
                    new PartnerAddress()
                    {
                        Type = "Тип 0002",
                        Country = "Страна 0002",
                        Region = "Регион 00021",
                        City = "Город 0002",
                        Presentation = "Представление 0002",
                    }
                }
            };

            // Сериализация.
            var options = new JsonSerializerOptions
            {
                Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.Cyrillic),
                WriteIndented = true,
            };
            var newJsonText = JsonSerializer.Serialize(data, options);

            // Вывод на консоль.
            Console.WriteLine(newJsonText);
        }

        private static void Display(TriggerData data)
        {
            // Способ 1.
            foreach (var address in data.PartnerAddresses)
            {
                // Внутри Console.WriteLine будет вызван метод ToString для
                // экземпляра класса PartnerAddress, у которого этот метод переопределён.
                // https://source.dot.net/#System.Private.CoreLib/TextWriter.cs,09da57c2c21a3a44
                Console.WriteLine(address);
            }

            // Способ 2.
            //for (int i = 0; i < data.PartnerAddresses.Count; i++)
            //{
            //    Console.WriteLine(data.PartnerAddresses[i]);
            //}
        }
    }
}


TriggerData.cs
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace ConsoleApp
{
    public class TriggerData
    {
        [JsonPropertyName("партнерАдреса")]
        public List<PartnerAddress> PartnerAddresses { get; set; }
    }
}


PartnerAddress.cs
using System.Text.Json.Serialization;

namespace ConsoleApp
{
    public class PartnerAddress
    {
        [JsonPropertyName("тип")]
        public string Type { get; set; }

        [JsonPropertyName("страна")]
        public string Country { get; set; }

        [JsonPropertyName("регион")]
        public string Region { get; set; }

        [JsonPropertyName("город")]
        public string City { get; set; }

        [JsonPropertyName("представление")]
        public string Presentation { get; set; }

        public override string ToString()
        {
            return $"{Type}, {Country}, {Region}, {City}, {Presentation}";
        }
    }
}


PartnerData.json файл должен быть сохранён в UTF-8 кодировке
{
  "партнерАдреса": [
    {
      "тип": "тип1",
      "страна": "страна1",
      "регион": "регион1",
      "город": "город1",
      "представление": "представление1"
    },
    {
      "тип": "тип2",
      "страна": "страна2",
      "регион": "регион2",
      "город": "город2",
      "представление": "представление2"
    },
    {
      "тип": "null",
      "страна": "null",
      "регион": "null",
      "город": "null",
      "представление": "null"
    },
    {
      "тип": "тип3",
      "страна": "страна3",
      "регион": "регион3",
      "город": "город3",
      "представление": "представление3"
    }
]
}


ConsoleApp.csproj (.NET 5 проект)
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <None Update="PartnerData.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>


61284df6cbd4b767243491.png
Ответ написан
Комментировать
@oleg_ods
List - это коллекция(что то типа массива где хранятся данные).

Для того чтобы вывести данные в цикле(допустим for)

for(int i = 0; i < {название коллекции}.Count; i++)
{
    {название коллекции}[i]  // тут выполняешь нужные тебе действия с i- тым элементом коллекции. 
}


P.S. И отвыкай от кириллицы в коде =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы