how create json structure using c
Crearea structurii JSON (partea 2):
În tutorialul nostru anterior, am discutat crearea unui fișier JSON simplu folosind exemple de seturi de date .
De asemenea, am ajuns să cunoaștem detaliile despre utilizarea unui framework json.Net pentru serializarea datelor în format JSON. Am folosit C # și Visual Studio pentru a crea o aplicație simplă de consolă pentru a utiliza datele și valorile cheie furnizate de noi și apoi am serializat aceste valori cheie în structura JSON. Acum, să vedem ce va acoperi acest tutorial pe măsură ce avansăm.
În acest tutorial, vom discuta despre modalitățile de a crea o structură JSON mai complexă. Vom crea matrici cu mai multe seturi de date și vom analiza și modalitățile de a crea o structură imbricată în JSON.
Majoritatea fișierelor JSON utilizate pentru transmiterea datelor între diferite sisteme conțin structuri de date mai complexe. Astfel, învățarea despre structura JSON complexă vă va ajuta să creați date de test pe baza cerințelor schemei JSON.
Ce veți învăța:
- Scrierea Codului
- Adăugarea matricei cu mai multe date în JSON
- Efectuarea de operații pe date înainte de a le atribui cheilor JSON
- Crearea unei structuri JSON imbricate
- Utilizarea unei foi Excel ca sursă de date pentru JSON
- Concluzie
- Lectură recomandată
Scrierea Codului
Vom face referire la postarea noastră anterioară în acest tutorial. Prin urmare, aș sugera tuturor să treacă mai întâi prin tutorialul anterior, înainte de a continua cu acesta.
Vom folosi aceleași date JSON pe care le-am folosit în tutorialul nostru anterior. De asemenea, vom urmări același set de cod pe care l-am scris pentru exemplul nostru anterior JSON.
Să începem acum. !!
Adăugarea matricei cu mai multe date în JSON
Pentru a adăuga o matrice la JSON, permiteți-ne să adăugăm o cheie de matrice la setul nostru de date anterior.
Setul nostru de date va deveni așa cum se arată mai jos:
Adăugarea unui obiect matrice la JSON este similară cu cea a adăugării oricăror alte valori cheie. Valorile pot fi atribuite direct în momentul declarării matricei în sine. Odată ce valorile au fost atribuite unui tablou, atunci JSON newtonsoft va serializa obiectele în perechi cheie-valoare.
Pentru a adăuga matricea în JSON, o vom declara în 'Angajat' clasa în sine. (Vă rugăm să consultați tutorialul nostru anterior pentru detalii)
namespace jsonCreate { class Employee { public string FirstName = 'Sam'; public string LastName = 'Jackson'; public int employeeID = 5698523; public string Designation = 'Manager'; public string() KnownLanguages = { 'C#', 'Java', 'Perl' }; } }
După cum puteți vedea, am declarat direct matricea în clasa Angajați. Nu efectuați modificări în metoda principală. Crearea unei clase diferite pentru obiectul JSON ne va ajuta să păstrăm obiectele organizate.
Ori de câte ori există modificări în structura JSON sau când doriți să adăugați un alt set de date, tot ce trebuie să faceți este să faceți modificările în acel fișier de clasă, în loc să faceți modificări în tot proiectul. Aceasta înseamnă că metoda dvs. principală va rămâne aceeași de cele mai multe ori, iar modificările vor avea loc numai în cadrul claselor.
Să executăm programul și să creăm fișierul nostru JSON cu matricea.
Acum copiați conținutul și lipiți Aici pentru a valida dacă JSON-ul creat este valid sau nu.
Faceți clic pe Validați JSON pentru a-l valida. Perechile cheie-valoare JSON vor fi aranjate și validarea va fi efectuată pe setul de date dat.
Efectuarea de operații pe date înainte de a le atribui cheilor JSON
Să presupunem că avem unele date și că dorim să efectuăm o anumită operație pe acele date înainte de a le atribui ca valori tastelor JSON.
Într-un astfel de caz, cum vom face asta?
De exemplu: Să presupunem că ID-ul angajatului pe care l-am transmis în JSON este format din două părți, primele trei litere denotă codul locației și ultimele 4 cifre denotă numărul angajatului. Concatenarea ambelor ne va oferi codul de angajat al unui angajat.
În cazul în care primim codul de locație și numărul angajaților separat, va trebui să le concatenăm împreună pentru a forma un ID de angajat. Doar atunci îl putem trece prin JSON.
Pentru a depăși acest tip de scenarii, trebuie să efectuăm operațiuni pe date înainte de a le atribui unei chei.
Să aruncăm o privire asupra modului în care se poate face acest lucru.
Să ne întoarcem la clasa noastră de angajați și să creăm o altă clasă, în cadrul căreia vom efectua toate operațiunile.
Aici vom crea o altă clasă pentru a conține și a efectua operațiunile pe datele angajaților.
Să creăm o nouă clasă „EmployeeData”.
Clasa a fost creată, iar acum să creăm o metodă cu specificator de acces public și tip de returnare ca clasă „Angajat”. Am furnizat numele metodei ca „EmployeeDataOps” . Cu toate acestea, vă puteți furniza propriul nume. Pentru a face acest lucru mai simplu, nu trec niciun parametru în cadrul acestei metode.
Pe măsură ce am descris tipul de returnare ca o clasă, va trebui să returnăm o instanță din clasa Employee. Pentru a face acest lucru, vom crea un obiect de clasă în interiorul metodei.
Aici, am creat un obiect pentru clasa Angajați cu numele EmpObj iar la sfârșitul metodei, am returnat obiectul.
Să definim două numere întregi din clasa EmployeeData care reprezintă codul de locație complet și numărul de angajat. Odată declarat, îl vom folosi pentru a efectua operații și apoi vom atribui valori tastelor respective.
int locationCode = 569; int employeeNumber = 8523;
Acum, deoarece avem codul de locație și numărul angajatului, putem efectua operațiuni asupra acestora pentru a găsi ID-ul angajatului. Pentru a face acest lucru, vom scrie un cod simplu pentru a concatena ambele numere întregi.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
Acest lucru va concatena pur și simplu atât numerele întregi care formează ID-ul angajatului. Am stocat ID-ul angajatului sub variabilă „EmpID” , iar acum vom trece această variabilă la „angajatID” în EmpObj.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
Întregul eșantion de cod va arăta așa cum se arată mai jos:
cel mai bun blocator pop-up gratuit pentru crom
Ați observat că am eliminat valoarea pe care am atribuit-o anterior variabilei de angajat din clasa Angajați? Am făcut acest lucru în timp ce returnăm valoarea EmployeeDataOps () metodă. Prin urmare, datele variabilelor vor fi alimentate din această metodă. Aceasta elimină necesitatea declarării directe a valorilor.
cea mai bună revizuire a software-ului text to speech
După cum am terminat cu metoda acum, va trebui să adăugăm o instanță a acestei metode la metoda principală, astfel încât această metodă să poată fi apelată.
Pentru a face acest lucru, vom crea un alt obiect de clasă în metoda principală pentru „EmployeeData” clasă.
EmployeeData empData = new EmployeeData();
Odată ce am creat un obiect de clasă, vom atribui acum metoda din această clasă obiectului Emp pe care l-am creat mai devreme pentru clasa de angajat.
emp = empData.EmployeeDataOps();
În cele din urmă, codul din metoda principală va semăna astfel:
Să punem câteva date de testare:
Codul de locație = 123
Număr angajat = 9874
Vom introduce aceste date în cod și cu modificările finale ale metodei principale. Acum ne-am completat codul. Acum, permiteți-ne să rulăm codul și să validăm JSON.
Acesta este JSON care a fost creat:
După cum puteți vedea, noua valoare concatenată pentru ID-ul angajatului a fost introdusă în valoarea JSON.
Să copiem și să lipim acest JSON Aici pentru a-i valida structura. Puneți textul în site-ul de scame JSON.
Utilizați butonul de validare pentru a valida structura așa cum se arată mai jos:
Crearea unei structuri JSON imbricate
Exemplul pe care l-am discutat până acum folosește în principal valori șir și numerice în interiorul unui tablou sau obiect. Dar JSON poate fi folosit și pentru a exprima un întreg obiect JSON utilizând aceeași noțiune ca un element matrice. Membrii obiectului din listă își pot folosi propriile obiecte și chei de matrice.
În Introducere la JSON, care este unul dintre tutorialele noastre anterioare, am analizat prima dată cum arată un JSON imbricat. În acest tutorial, presupunem că angajatul are și o mașină, iar JSON ar trebui să conțină toate detaliile despre mașina angajatului.
Deci structura JSON pe care o obținem la final va fi similară cu aceasta:
Aici, avem angajatul JSON cu toate datele, apoi avem și un obiect Car JSON imbricat în interiorul angajatului JSON. Obiectul mașinii are propriul set de chei și valori.
Să încercăm să creăm acest JSON programat.
Pentru aceasta, vom începe cu același JSON pe care l-am creat în tutorialul nostru anterior. Pentru a fi mai ușor, vom crea noul obiect JSON (adică Mașina JSON) într-o nouă clasă. Vom adăuga o mașină nouă de clasă și vom adăuga toate obiectele din această clasă cu un specificator de acces public.
Acum, putem adăuga valoarea direct aici sau putem scrie o nouă clasă și putem crea o metodă personalizată cu un tip de returnare a obiectului de clasă pentru a atribui valori similare cu ceea ce am făcut în tutorialul anterior. Din motive de comoditate, vom atribui valoarea direct variabilelor cheie.
Acum am creat o nouă clasă cu obiecte și valori. În pasul următor, vom adăuga acest lucru la structura JSON a angajaților, astfel încât, atunci când se întâmplă serializarea JSON, valorile-cheie din clasa Mașină ar trebui, de asemenea, să fie serializate împreună cu clasa angajaților ca cuibărit JSON.
Pentru a face acest lucru, mai întâi, va trebui să adăugăm o mașină obiect tip clasă în clasa Angajați. Acest obiect va fi folosit pentru a stoca valorile prezente în clasa Mașină.
Așa cum se arată mai sus, am atribuit noua variabilă cu tipul de date ca clasă auto. Acum să mergem la metoda EmployeeDataOps () pe care am creat-o în cadrul clasei EmployeeData. Vom scrie codul pentru a apela variabilele și valorile din clasa Mașină.
Mai întâi, să creăm un obiect de clasă pentru clasa de mașini:
Car carObj = new Car();
Acest obiect va conține toate datele din clasa de mașini. Odată ce am declarat toate datele din clasa mașinii în acest obiect, următorul pas va fi să atribuim aceste date (datele conținute în obiectul mașinii) variabilei mașină pe care am creat-o pentru păstrarea acestor date.
Pentru a face acest lucru, vom folosi pur și simplu obiectul Angajat pe care l-am creat pentru a accesa variabila auto. Și apoi putem atribui direct obiectul mașinii cu datele variabilei mașinii.
EmpObj.car = carObj;
Asta este. Am creat o variabilă într-o clasă, apoi am creat un alt obiect pentru a accesa valoarea de la o altă clasă, apoi am atribuit valoarea primei variabile.
Acum, permiteți-ne să rulăm programul nostru și să vedem dacă poate crea JSON dorit.
Așa cum se arată mai sus, vedem că a fost creată o cheie json auto și care conține toate datele pe care le-am introdus în clasa Auto ca cheie și valori. Acum, vom copia din nou conținutul JSON și vom naviga Aici pentru a valida JSON.
Copiați tot conținutul JSON în zona de text și faceți clic pe „Validați JSON ”Buton.
Deci, site-ul JSONlint ne-a aranjat datele și le-a validat perfect. Putem vedea că obiectul „mașină” a fost aranjat în structura JSON așa cum am solicitat. Folosind același proces, puteți crea mai multe niveluri de JSON imbricat. Continuați să adăugați obiectul JSON la clasă și atribuiți valoarea sa unei variabile de clasă.
După cum puteți vedea, nu trebuie să schimbăm niciun cod în metoda noastră principală.
Utilizarea unei foi Excel ca sursă de date pentru JSON
În tutorialele noastre anterioare, am discutat mai multe moduri de a crea structuri diferite ale JSON. Dar a fost o problemă mare cu toate structurile noastre, am fost întotdeauna greu de codificat valorile pentru chei.
În acest tutorial, vom discuta modalitățile prin care putem folosi o foaie Excel pentru a alimenta datele către tastele JSON. Vă recomandăm să parcurgeți toate tutorialele pe care le-am discutat anterior înainte de a continua cu acesta, deoarece vom discuta același cod pe care l-am scris în tutorialele anterioare.
Mersul pas cu pas vă va ajuta să înțelegeți întregul concept într-un mod mai bun.
Sper că ați înțeles codul de bază pentru a crea un JSON, în această parte vom continua aceeași structură de cod.
Mai întâi, să creăm un fișier Excel cu date JSON.
Am creat un fișier employeeData.xlsx cu următoarele detalii.
Înainte de a începe să scriem codul pentru extragerea valorilor din Excel, va trebui să adăugăm o referință de asamblare la proiectul nostru. Pentru a accesa obiectul Office, C # ne oferă Microsoft Office Interop. Acestea sunt destul de utile pentru a oferi acces ușor la obiectele de birou.
cel mai bun program pentru clonarea hard diskului
Deoarece utilizăm excel în acest proiect, vom folosi referința ansamblului Microsoft Office Interop Excel.
Pentru a-l instala, faceți clic dreapta pe Referințe în exploratorul de soluții și apoi selectați Gestionați pachetele NuGet . Scrieți Microsoft Office Interop Excel în bara de căutare și rezultatul căutării va afișa pachetul necesar.
Odată ce obțineți Microsoft Office Interop Excel, faceți clic pe Butonul de instalare pentru a-l instala.
Odată ce instalarea este finalizată, puteți vedea că Microsoft Office Interop Excel a fost adăugat la lista referințelor de asamblare din proiect.
Pentru început, să atribuim mai întâi diferitele elemente Excel.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Aici, am atribuit valori aplicației Excel, registrului de lucru Excel și foaiei de lucru Excel. Odată ce acestea sunt definite, le vom folosi în următorii pași pentru a accesa valorile din foaia Excel.
Care sunt pașii pe care îi urmăm în general, dacă vrem să preluăm o valoare dintr-o foaie Excel?
Mai întâi, accesăm aplicația Excel, apoi deschidem registrul de lucru Excel și foaia de lucru Excel și mai târziu localizăm elementul pe baza valorilor rândurilor și coloanelor sale. Vom face ceva similar aici.
Acest cod va accesa aplicația excel.
xlApp = new Microsoft.Office.Interop.Excel.Application();
Acest cod va deschide registrul de lucru cu numele dat prezent la locația dată.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
Acum, vom scrie un cod pentru a accesa foaia de lucru specială din registrul de lucru. Avem o foaie de lucru numită „Sheet1” (numele implicit din foaia Excel)
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
Pe măsură ce am accesat Foaia de lucru, acum următorul pas va fi să găsim coloana corectă și datele corecte. În primul rând, vom căuta o coloană cu „Cheia”.
De exemplu, Mai întâi, să căutăm coloana cu valoarea „Prenume”. Odată ce vom găsi valoarea, vom extrage numărul coloanei. Apoi, după cum știm, primul rând conține titlul și al doilea rând conține datele noastre, așa că vom folosi numărul coloanei și numărul rândului pentru a extrage datele exacte.
Aceasta va stoca numărul coloanei pentru prenumele în variabilă.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
Acum, vom folosi numărul coloanei FirstName pentru a extrage valoarea din celula de sub ea. După cum se știe, metoda valorii va returna doar tipul de șir, așa că vom stoca acest lucru într-o variabilă de șir.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
Acum, avem valoarea prenumelui stocată în variabilă. Deci, vom folosi obiectul angajat pe care l-am definit în metoda noastră pentru a atribui valoarea.
Vă rugăm să eliminați toate valorile pe care le-ați atribuit / codificat în clasa Angajați, deoarece vom returna valorile folosind metoda noastră.
Dar există o problemă cu acest lucru, '.Text' funcția returnează întotdeauna o valoare șir. Deci, dacă vrem să extragem valoarea unui ID de angajat care este un număr întreg, acesta va fi extras și ca șir. Deci, va trebui să convertim acest șir într-un număr întreg înainte de a-l atribui obiectului JSON. Pentru a face acest lucru, vom analiza direct valoarea într-un număr întreg.
Deci, codul pentru angajat ID va arăta așa cum se arată mai jos:
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
La sfârșit, vom analiza valoarea șirului la un număr întreg, deoarece JSON recunoaște ID-ul angajatului ca valoare întreagă.
Deci, codul general pentru preluarea datelor pentru toate cele 4 coloane va arăta așa cum se arată mai jos:
Acum, tot ce trebuie să facem este să atribuim obiectelor angajaților variabilele pe care le-am creat cu datele din foaia Excel.
Totul este pregătit, acum vom construi proiectul. Odată ce construirea este completă, vom executa programul pentru a genera JSON.
Următorul JSON va fi generat:
Acum, să comparăm datele din JSON cu cele din foaia Excel.
După cum se arată mai sus, datele JSON se potrivesc cu datele din toate cele 4 coloane ale foii Excel. Să validăm JSON generat de programul nostru. Pentru a face acest lucru, vom vizita din nou Aici . Copiați tot conținutul JSON în zona de text și faceți clic pe „Validați JSON” buton.
Ura! Am creat un JSON valid folosind datele din excel.
Exercițiu pentru tine:
Creați un JSON imbricat pe trei niveluri. Creați o companie părinte JSON și cuiburați angajatul JSON pe care l-am creat mai devreme împreună cu mașina JSON.
Concluzie
Am ajuns la sfârșitul tutorialului nostru. A fost un tutorial lung, dar am învățat mai multe lucruri. Am învățat cum să creăm un JSON simplu folosind programarea c # și avantajele clasificării diferitelor seturi de date JSON într-o clasă diferită. De asemenea, ne-am folosit abilitățile de programare pentru a adăuga matrici și chiar o altă structură JSON în interiorul unui JSON părinte.
În cele din urmă, am lucrat la modalitățile de preluare a datelor dintr-o altă sursă de date pentru a alimenta valorile către tastele JSON.
Sper că v-ați bucurat cu toții de întreaga serie de tutoriale JSON până acum.
Tutorial # 4: Utilizarea JSON pentru testarea interfeței
Lectură recomandată
- Cum se creează obiecte JSON folosind codul C # (JSON Creation Part 1)
- Cele mai bune întrebări și răspunsuri la interviurile JSON
- Utilizarea JSON pentru testarea interfeței
- Tutorial JSON: Introducere și ghid complet pentru începători
- Structura datelor în coadă în C ++ cu ilustrație
- MongoDB Creați o copie de rezervă a bazei de date
- Stivați structura datelor în C ++ cu ilustrație
- Structură de date cu listă circulară legată în C ++ cu ilustrație