A
A
almenovr2021-08-26 23:20:55
C++ / C#
almenovr, 2021-08-26 23:20:55

How to create multiple class objects in a loop?

There is a class for generating 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; }
}


How to output multiple instances of PartnerAddress in a loop?

in code
партнерАдреса = new List<ПартнерАдреса>()
{					
  new ПартнерАдреса() {
    тип = "1",
    страна = "2",
    регион = "3",
    город = "4",
    представление = "5"
  }
}

Answer the question

In order to leave comments, you need to log in

3 answer(s)
D
Developer, 2021-08-26
@samodum

1C-nick can be seen immediately, poor fellow.
Loop multiple instances

B
Boris the Animal, 2021-08-27
@Casper-SC

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 file must be saved in UTF-8 encoding
{
  "партнерАдреса": [
    {
      "тип": "тип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)
<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

O
oleg_ods, 2021-08-27
@oleg_ods

List is a collection (something like an array where data is stored).
In order to display data in a loop (let's say for)

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

PS And get out of the Cyrillic alphabet in the code =)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question