Как записать материал из json на консоль?

#c#

#c#

Вопрос:

Как записать сериализовать структуру в json и отобразить ее в консоли.

Вот что у меня есть на данный момент:

 using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;

namespace OP_MARTIN_CIKOR {
    class Program 
    {

        public struct korisnik
        {
            public string username;
            public string password;

            public korisnik(string u, string pas)
            {
                username = u;
                password = pas;
            }
        }


        public struct zaposlenici
        {
            public string ime;
            public string prezime;
            public string putni_nalog;
            public zaposlenici(string i, string p, string pn)
            {
                ime = i;
                prezime = p;
                putni_nalog = pn;
            }
        }

        public struct gradovi
        {
            public string Sifra;
            public string Grad;

            public gradovi(string s, string g)
            {
                Sifra = s;
                Grad = g;

            }
        }

        public struct putninalozi
        {
            public string rednibroj;
            public string imeiprezime;
            public string vrsta;
            public string polaziste;
            public string odrediste;
            public DateTime datumodlaska;
            public DateTime datumpovratka;
            public string trajanje;
            public putninalozi(string rbr, string iip, string v, string pol, string odr, DateTime datumod, DateTime datumpov, string traj)
            {
                rednibroj = rbr;
                imeiprezime = iip;
                vrsta = v;
                polaziste = pol;
                odrediste = odr;
                datumodlaska = datumod;
                datumpovratka = datumpov;
                trajanje = traj;
            }
        }

        public static List<korisnik> Korisnik = new List<korisnik>();
        public static List<zaposlenici> Zaposlenici = new List<zaposlenici>();
        public static List<gradovi> Gradovi = new List<gradovi>();
        public static List<putninalozi> Putninalozi = new List<putninalozi>();

        static void Main(string[] args)
        {
            string path = @"C:UsersMartinsourcereposOPOPkorisnik.json";
            StreamReader oSr = new StreamReader(path);
            string sJson = oSr.ReadToEnd();
            Korisnik = JsonConvert.DeserializeObject<List<korisnik>>(sJson);


            path = @"C:UsersMartinsourcereposOPOPgradovi.json";
            StreamReader oSr0 = new StreamReader(path);
            string sJson0 = oSr0.ReadToEnd();
            Gradovi = JsonConvert.DeserializeObject<List<gradovi>>(sJson0);


            path = @"C:UsersMartinsourcereposOPOPputninalozi.json";
            StreamReader oSr1 = new StreamReader(path);
            string sJson1 = oSr1.ReadToEnd();
            Putninalozi = JsonConvert.DeserializeObject<List<putninalozi>>(sJson1);


            path = @"C:UsersMartinsourcereposOPOPzaposlenici.json";
            StreamReader oSr2 = new StreamReader(path);
            string sJson2 = oSr2.ReadToEnd();
            Zaposlenici = JsonConvert.DeserializeObject<List<zaposlenici>>(sJson2);

            string username, password;
            Console.WriteLine("Korisničko ime/Username: ");
            username = Console.ReadLine();
            Console.WriteLine("Password: ");
            password = Console.ReadLine();
            bool prijava = false;


            foreach (korisnik k in Korisnik)
            {
                if (username == k.username)
                {
                    if (password == k.password)
                    {
                        prijava = true;

                    }
                    else
                    {
                        Console.WriteLine("Netocni podatci za prijavu.");

                    }
                }
            }

            if (prijava == true)
            {
                Console.WriteLine("Unesite broj 1 ili 2 za odabir zeljene opcije: ");
                Console.WriteLine("1) Ispis svih putnih naloga!");
                Console.WriteLine("2) Ispis putnih naloga svih zaposlenika!");
                Console.Write("Opcija: ");
                int opcija = int.Parse(Console.ReadLine());
                switch (opcija)
                {
                    case 1:


                        int rb = 0;
                        foreach (putninalozi i in Putninalozi)
                        {
                            Console.Write("Redni Broj: {0}, ", rb);
                          
                            Console.WriteLine("R.Br: {0}, Ime i prezime: {1}, Vrsta prijevoza: {2}, Polaziste: {3}, Odrediste: {4}, Datum odlaska: {5}, Datum povratka: {6}, Trajanje: {7} ",
                                            i.rednibroj, i.imeiprezime, i.vrsta, i.polaziste, i.odrediste, i.datumodlaska, i.datumpovratka, i.trajanje);
                            rb  ;
                        }
                        break;


                    case 2:
                        {
                            Console.WriteLine("Ispis putnih naloga svih zaposlenika!");
                            //
                            break;
                        }
                            default:
                        Console.WriteLine("Opcija ne postoji!");
                            break;
                        
                }

            }
        }
    }
}
 

и это информация в файле json

 [
  {
    "R.Br": 1,
    "Ime i prezime": "Ivo Ivic",
    "Vrsta prijevoza": "Automobil",
    "Polazište": 1,
    "Odredište": 5,
    "Datum odlaska": "2020-04-07T07:00:00",
    "Datum povratka": "2020-04-07T18:00:00",
    "Trajanje": 6
  },
  {
    "R.Br": 2,
    "Ime i prezime": "Ivan Ivic",
    "Vrsta prijevoza": "Automobil",
    "Polazište": 2,
    "Odredište": 5,
    "Datum odlaska": "2020-12-04T10:00:00",
    "Datum povratka": "2020-12-09T20:00:00",
    "Trajanje": 6
  },
  {
    "R.Br": 3,
    "Ime i prezime": "Mario Kral",

    "Vrsta prijevoza": "Automobil",
    "Polazište": 4,
    "Odredište": 5,
    "Datum odlaska": "2020-04-09T06:00:00",
    "Datum povratka": "2020-04-11T04:00:00",
    "Trajanje": 6
  },
  {
    "R.Br": 4,
    "Ime i prezime": "Ivo Anic",
    "Vrsta prijevoza": "Automobil",
    "Polazište": 3,
    "Odredište": 5,
    "Datum odlaska": "2020-14-07T10:00:00",
    "Datum povratka": "2020-14-07T14:00:00",
    "Trajanje": 6
  },
  {
    "R.Br": 5,
    "Ime i prezime": "Luka Majer",
    "Vrsta prijevoza": "Automobil",
    "Polazište": 1,
    "Odredište": 5,
    "Datum odlaska": "2020-07-09T12:00:00",
    "Datum povratka": "2020-07-09T13:00:00",
    "Trajanje": 6
  },
  {
    "R.Br": 6,
    "Ime i prezime": "Robert Tomic",
    "Vrsta prijevoza": "Automobil",
    "Polazište": 4,
    "Odredište": 5,
    "Datum odlaska": "2020-04-07T10:00:00",
    "Datum povratka": "2020-06-07T19:00:00",
    "Trajanje": 6
  }
]

 

материал trajanje — это разница между «datum odlaska» и «datum povratka», мне нужна функция в программе для ее вычисления, я пробовал много способов, но без какого-либо успеха :/

Комментарии:

1. Где вы читаете информацию в формате Json? Что такое Putninalozi ? Пример кода не дает нам ничего, чтобы воспроизвести проблему.

2. Я не понимаю, почему вы хотите десериализовать файл json без класса сериализации?

3. я просто не знаю, как это решить, и мне нужна ваша помощь, все, что я получил на консоли, это «R.Br «, «Име и Презиме», «Врста приевоза»

Ответ №1:

Структура «zaposlenici» не может использоваться для корректного отображения файлов json, которые вы читаете, поскольку имена свойств не совпадают. Вы можете использовать атрибут «JsonProperty» в своих свойствах, чтобы заставить их использовать определенные имена в документе JSON.

Пример:

 public struct zaposlenici {
    [JsonProperty(PropertyName = "Ime i prezime")]
    public string ime;

    ...
}