[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 6639 korisnika na forumu :: 66 registrovanih, 6 sakrivenih i 6567 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, 4. Ozrenska, A.R.Chafee.Jr., airliners, ALEXV, bavar357, bojan_t, croato, Dare, DeerHunter, Denaya, Despot Đurađ, DonRumataEstorski, Dorcolac, drgrozozo, dunavzed, DziadekDzidek, eulereix, Gaga_89, Giskard, glados, Goran 0000, goxin, Ivoo, JOntra, Kajzer_Soze, KimiMR, Kole1975, Koridor, Leonov, LostInSpaceandTime, MadMike, Makarid, Marko Marković, mercedesamg, miljannis, milos.cbr, milutin134, mnn2, nelezele, neutrino, nikolapetkovic, nixos, Nobunaga, OKT, orfanel, Pantaaa, Pekman, rakivan, ruma, sajorg, Semprini, Sin Boskic, Solunac na steroidima, Ugljesa99, vaci, VanZan, vidra boy, VJ, Vlad000, Voice1, vukan0799, zdrebac, Zmajac, Zoran1959, 79693