#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;
...
}