[Resio]VC++ ucitavanje JSON podataka

[Resio]VC++ ucitavanje JSON podataka

offline
  • Pridružio: 15 Maj 2009
  • Poruke: 963

Napisano: 25 Jun 2017 14:45
Pravim Form Application u VS2012 C++.
Imam neke podatke u json fajlovima i treba da ih ucitam.
{   "id1": {     "key1": "val11",     "key2": [       "it11",       "it12"     ]   },   "id2": {     "key1": "val21",     "key2": [       "it21"     ]   } }
Voleo bih da podacima mogu da pristupam na sledeci nacin:
//pseudokod String^ key = "id1"; return root[key]->key1;
Naleteo sam na pojam 'deserijalizacija' i izgleda da je to najbolje uraditi.
JSON.Net na koji sam prvo naleteo nece da se instalira bez nove verzije NuGet-a a ona izgleda nece u VS2012.
Video sam da ima i ugradjenih klasa za ovo, poput DataContractJsonSerializer, i jednostavnije mi je da njih koristim.

Nemam iskustva sa ovim, pa moze neko da mi napise kako treba da izgleda kod?

Ono sto sam ja napisao i sta normalno nije ispravno:
ref class Element { public:   String^ key1;   List<String^> key2; }; [DataContract] ref class Root { public:   [DataMember]Dictionary<String^, Element^> objects; }; //... FileStream^ stream = File::OpenRead(file); DataContractJsonSerializer^ ser = gcnew DataContractJsonSerializer(Root::typeid); Root^ root = (Root^)ser->ReadObject(stream);
Dopuna: 25 Jun 2017 18:21
Mozda sam trebao da napomenem da JSON ne mora da bude bas tog formata (mada bi voleo da je tako).

Uspeo sam da deserijalizujem niz objekata
[   {     "id": "id1",     "key1": "val11",     "key2": [       "it11",       "it12"     ]   },   {     "id": "id2": {     "key1": "val21",     "key2": [       "it21"     ]   } ]
I onda imamo
[DataContract] ref class Element { public:   [DataMember] String^ id;   [DataMember] String^ key1;   [DataMember] List<String^>^ key2; }; //... DataContractJsonSerializer^ ser = gcnew DataContractJsonSerializer(List<Element^>::typeid); List<Element^>^ list = (List<Element^>^)ser->ReadObject(stream);
Na zalost, sad ne mogu da radim list[key]->key1 vec bi morao da iterisem celu listu da nadjem neki kljuc, mada izgleda da moze i to da se sredi: [Link mogu videti samo ulogovani korisnici]



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14828
  • Gde živiš: Niš

JSON.Net sam ja jednom prilikom koristio i radio je baš to što ti tražiš, a lak je za upotrebu. Ako ne možeš da gavpreuzmeš preko NuGet-a, uvek možeš da preuzmeš direktno dll (verujem da imaju neki svoj sajt/blog/šta god) i referenciraš ga.



Ko je trenutno na forumu
 

Ukupno su 768 korisnika na forumu :: 102 registrovanih, 12 sakrivenih i 654 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 16.mabr, A.R.Chafee.Jr., Akiro, Andy, Aska, bankulen, bigfoot, bilisrbija, Bobrock1, bojan_t, ccoogg123, ceman, cifra, Cirkon, Crazzer, cvrle312, Czrweni, Dannyboy, dekir, djboj, djonsule, DJUNTA, Dokon Pop, DonRumataEstorski, Dusko_Dugousko, Futurama, glados, Goran_, Hamo77, Hans Gajger, Helket, HrcAk47, Hubert, Incognito, Ivica1102, ivica976, Jan, kljift, Komanca, Kosare, Kototamopeva, kunktator, luka35, m0nstrum_, M74AB3, MaCS, Mamadu, marsi, mercedesamg, MilosKop, Milovan Dinic, miodrag, Moldovan, morava_01, mr.lucas, mrgud2025, Mzee, N.e.m.a.nj.a., nazgul75, Ne doznajem se u oružje, nemkea71, Nepopravljivi, nixos, OldKresoje, Perudin_92, Pewac21, pisac12, Podgoritza, Prašinar, proljece, rachmoff, razumihin, Redred, royst33, s0ne, saputnik plavetnila, Sharpshooter, Smor, Sonic, srecko81, ssekir75, Timočka Divizija, Titan, tomo2, travisrise, Tribal, ulogovan, USSVoyager, Vanderx, vaso1, veljko82, veljkovicdani, vjetar, Vlad000, VojaeZ, vrag81, vuksa72, wexy, YugoSlav, zule2, zzapNDjuric99, zzzgmap