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>