how create json structure using c
Creació d’una estructura JSON (part 2):
En el nostre tutorial anterior, vam parlar crear un fitxer JSON senzill mitjançant conjunts de dades de mostra .
També vam conèixer els detalls sobre l’ús d’un framework json.Net per serialitzar dades en format JSON. Hem aprofitat C # i Visual Studio per crear una senzilla aplicació de consola per utilitzar les dades i els valors clau proporcionats per nosaltres i, a continuació, hem serialitzat aquests valors clau a l’estructura JSON. Ara, vegem què cobrirà aquest tutorial a mesura que avancem.
En aquest tutorial, analitzarem les maneres de crear una estructura JSON més complexa. Crearem matrius amb diversos conjunts de dades i també analitzarem les maneres de crear una estructura imbricada a JSON.
La majoria dels fitxers JSON utilitzats per a la transmissió de dades entre diversos sistemes contenen estructures de dades més complexes. D’aquesta manera, conèixer l’estructura JSON complexa us ajudarà a crear dades de prova basades en els requisits de l’esquema JSON.
Què aprendreu:
- Redacció del Codi
- Addició de matriu amb diverses dades a JSON
- Realització d'operacions sobre dades abans d'assignar-les a claus JSON
- Creació d'una estructura JSON imbricada
- Utilitzar un full d'Excel com a font de dades per a JSON
- Conclusió
- Lectura recomanada
Redacció del Codi
Farem referència a la nostra publicació anterior en aquest tutorial. Per tant, suggeriria a tothom que passés primer pel tutorial anterior, abans de continuar amb aquest.
Utilitzarem les mateixes dades JSON que vam fer servir al nostre tutorial anterior. També farem un seguiment del mateix conjunt de codi que vam escriure per al nostre exemple JSON anterior.
Comencem ara. !!
Addició de matriu amb diverses dades a JSON
Per afegir una matriu al JSON, afegim una clau de matriu al nostre conjunt de dades anterior.
El nostre conjunt de dades esdevindrà el següent:
Afegir un objecte de matriu al JSON és similar al d’afegir qualsevol altre valor clau. Els valors es poden assignar directament en el moment de declarar la matriu. Un cop assignats els valors a una matriu, el JSON newtonsoft serialitzarà els objectes en parells valor-clau.
Per afegir la matriu a la JSON, la declararem a la 'Empleat' classe en si. (Consulteu el nostre tutorial anterior per obtenir més informació)
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' }; } }
Com podeu veure, hem declarat directament el array a la classe Employee. No feu cap canvi al mètode principal. La creació d’una classe diferent per a l’objecte JSON ens ajudarà a mantenir els objectes organitzats.
Sempre que hi ha canvis a l'estructura JSON o quan voleu afegir un altre conjunt de dades, tot el que heu de fer és fer els canvis en aquest fitxer de classe concret en lloc de fer canvis a tot el projecte. Això vol dir que el vostre mètode principal continuarà sent el mateix la major part del temps i els canvis només es produiran dins de les classes.
Executem el programa i creem el nostre fitxer JSON amb la matriu.
Ara copieu el contingut i enganxeu-lo aquí per validar si el JSON creat és vàlid o no.
Feu clic al botó Valida JSON per validar-lo. S'organitzaran els parells clau-valor JSON i es realitzarà la validació del conjunt de dades donat.
Realització d'operacions sobre dades abans d'assignar-les a claus JSON
Suposem que tenim algunes dades i que volem fer alguna operació sobre aquestes dades abans d’assignar-les com a valors a les claus JSON.
En aquest cas, com ho farem?
Per exemple: Diguem que l’identificador d’empleat que hem passat al JSON està format per dues parts, les tres primeres lletres indiquen el codi d’ubicació i els darrers 4 dígits indiquen el número d’empleat. Concatenant tots dos ens proporcionarà la identificació d’empleat d’un empleat.
En cas que rebem el codi d'ubicació i el número d'empleat per separat, haurem de concatenar-los junts per formar un identificador d'empleat. Només així el podem passar pel JSON.
Per superar aquest tipus d’escenaris, hem de realitzar operacions sobre les dades abans d’assignar-les a una clau.
Vegem com es pot fer això.
Tornem a la nostra classe d'empleats i creem una altra classe, dins de la qual realitzarem totes les operacions.
Aquí crearem una altra classe per contenir i realitzar les operacions sobre les dades dels empleats.
Creem una nova classe 'EmployeeData'.
La classe s’ha creat i ara anem a crear un mètode amb un especificador d’accés públic i un tipus de retorn com a classe “Empleat”. Hem proporcionat el nom del mètode com 'EmployeeDataOps' . Tanmateix, podeu proporcionar el vostre propi nom. Per fer-ho més senzill, no estic passant cap paràmetre dins d'aquest mètode.
Com hem descrit el tipus de retorn com a classe, haurem de retornar una instància de la classe Employee. Per fer-ho, crearem un objecte de classe dins del mètode.
Aquí hem creat un objecte per a la classe Employee amb el nom EmpObj i al final del mètode, hem retornat l'objecte.
Definim dos enters a la classe EmployeeData que representen el codi d'ubicació complet i el número d'empleat. Un cop declarat, l’utilitzarem per realitzar operacions i després assignarem valors a les claus respectives.
int locationCode = 569; int employeeNumber = 8523;
Ara, com que tenim el codi d'ubicació i el número d'empleat, podem fer-hi operacions per trobar l'identificador d'empleat. Per fer-ho escriurem un codi senzill per concatenar els dos enters.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
Això simplement concatenarà els enters que formen l'identificador d'empleat. Hem desat l'identificador d'empleat a la variable 'EmpID' , i ara passarem aquesta variable a 'empleatID' a EmpObj.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
Tot el codi de mostra es mostrarà com es mostra a continuació:
el millor programari de recuperació de dades per a Windows
Heu notat que hem eliminat el valor que anteriorment assignàvem a la variable empleatID de la classe Empleat? Ho hem fet a mesura que retornem el valor EmployeeDataOps () mètode. Per tant, les dades de les variables s’alimentaran a partir d’aquest propi mètode. Això elimina la necessitat de declarar directament els valors.
el millor netejador de PC per a la descàrrega gratuïta de Windows 7
Com ja hem acabat amb el mètode, haurem d'afegir una instància d'aquest mètode al mètode principal perquè es pugui anomenar aquest mètode.
Per fer-ho, crearem un altre objecte de classe en el mètode principal de 'EmployeeData' classe.
EmployeeData empData = new EmployeeData();
Un cop hàgim creat un objecte de classe, ara assignarem el mètode dins d’aquesta classe a l’objecte Emp que hem creat anteriorment per a la classe d’empleats.
emp = empData.EmployeeDataOps();
Finalment, el codi del mètode principal s’assemblarà a aquest:
Posem algunes dades de prova:
Codi d'ubicació = 123
Número d'empleat = 9874
Introduirem aquestes dades al codi i amb els canvis finals al mètode principal. Ara hem completat el nostre codi. Ara, executem el codi i validem el nostre JSON.
Aquest és el JSON que es va crear:
Com podeu veure, el nou valor concatenat per a l'identificador d'empleat s'ha introduït al valor JSON.
Copiem i enganxem aquest JSON aquí per validar la seva estructura. Introduïu el text al lloc de peluix JSON.
Utilitzeu el botó de validació per validar l'estructura com es mostra a continuació:
Creació d'una estructura JSON imbricada
L'exemple que hem comentat fins ara utilitza principalment valors numèrics i de cadenes dins d'una matriu o objecte. Però JSON també es pot utilitzar per expressar un objecte JSON complet mitjançant la mateixa noció que un element de matriu. Els membres de l'objecte de la llista poden utilitzar els seus propis objectes i les claus de matriu.
A Introducció a JSON, que és un dels nostres tutorials anteriors, vam fer un primer cop d'ull a l'aspecte d'un JSON imbricat. En aquest tutorial, suposem que l’empleat també té un cotxe i que el JSON hauria de contenir tots els detalls sobre el cotxe de l’empleat.
Així doncs, l’estructura JSON que obtindrem al final serà similar a aquesta:
Aquí tenim l’empleat JSON amb totes les dades, i també tenim un objecte Car JSON imbricat dins de l’empleat JSON. L’objecte del cotxe té el seu propi conjunt de claus i valors.
Intentem crear aquest JSON per programació.
Per a això, començarem amb el mateix JSON que vam crear al nostre tutorial anterior. Per fer-ho més fàcil, crearem el nou objecte JSON (és a dir, Car JSON) en una nova classe. Afegirem un cotxe de classe nou i afegirem tots els objectes dins d’aquesta classe amb un especificador d’accés públic.
Ara bé, podem afegir el valor directament aquí o bé podem escriure una nova classe i crear un mètode personalitzat amb un tipus de retorn d'objecte de classe per assignar els valors similars al que vam fer al tutorial anterior. Per comoditat, assignarem el valor directament a les variables clau.
Ara hem creat una nova classe amb els objectes i els valors. Al següent pas, afegirem això a l’estructura JSON de l’empleat, de manera que quan es produeixi la serialització JSON, els valors-clau de la classe Car també s’han de serialitzar juntament amb la classe d’empleats com niat JSON.
Per fer-ho, primer, haurem d’afegir un cotxe objecte de tipus classe a la classe Employee. Aquest objecte s’utilitzarà per emmagatzemar els valors presents a la classe Car.
Com es mostra més amunt, hem assignat la nova variable amb tipus de dades com a classe de cotxe. Anem ara al mètode EmployeeDataOps () que hem creat dins de la classe EmployeeData. Escriurem el codi per trucar a les variables i valors de la classe Car.
En primer lloc, creem un objecte de classe per a la classe de vehicles:
Car carObj = new Car();
Aquest objecte contindrà totes les dades de la classe de vehicles. Un cop hàgim declarat totes les dades de la classe de cotxe a aquest objecte, el següent pas serà assignar aquestes dades (dades contingudes a l'interior de l'objecte de cotxe) a la variable de cotxe que hem creat per conservar aquestes dades.
Per fer-ho, simplement utilitzarem l’objecte Employee que hem creat per accedir a la variable del cotxe. I després podem assignar directament l’objecte del cotxe amb les dades a la variable del cotxe.
EmpObj.car = carObj;
Això és. Hem creat una variable en una classe i, a continuació, hem creat un altre objecte per accedir al valor d'una altra classe i, a continuació, hem assignat el valor a la primera variable.
Ara, executem el nostre programa i comprovem si pot crear el JSON desitjat.
Com es mostra més amunt, veiem que s’ha creat una clau JSON del cotxe i conté totes les dades que hem introduït a la classe Car com a clau i valors. Ara, tornarem a copiar el contingut JSON i navegarem aquí per validar el JSON.
Simplement copieu tot el contingut JSON a l'àrea de text i feu clic a “Valideu JSON ”Botó.
Per tant, el lloc JSONlint ha ordenat les nostres dades i les ha validat perfectament. Podem veure que l’objecte “cotxe” s’ha disposat a l’estructura JSON tal com hem requerit. Amb el mateix procés, podeu crear diversos nivells de JSON imbricat. Simplement seguiu afegint l'objecte JSON a la classe i assigneu-ne el valor a una variable de classe.
Com podeu veure, ni tan sols hem de canviar cap codi al nostre mètode principal.
Utilitzar un full d'Excel com a font de dades per a JSON
En els nostres tutorials anteriors, vam discutir diverses maneres de crear diferents estructures de JSON. Però hi va haver un gran problema amb totes les nostres estructures, sempre vam ser difícils de codificar els valors de les claus.
En aquest tutorial, analitzarem les maneres en què podem utilitzar un full Excel per alimentar les dades a les claus JSON. Us recomanaria que consulteu tots els tutorials que hem comentat anteriorment abans de continuar amb aquest, ja que discutirem el mateix codi que vam escriure als tutorials anteriors.
Anar pas a pas us ajudarà a entendre millor el concepte sencer.
Espero que hàgiu entès el codi bàsic per crear un JSON, en aquesta part avançarem la mateixa estructura de codi.
En primer lloc, creem un fitxer Excel amb dades JSON.
Hem creat un fitxer employeeData.xlsx amb les dades següents.
Abans de començar a escriure el codi per extreure valors de l’excel, haurem d’afegir una referència de muntatge al nostre projecte. Per accedir a l’objecte d’oficina, C # ens ofereix el Microsoft Office Interop. Aquests són molt útils per facilitar l'accés als objectes d'oficina.
defecte del cicle de vida en les proves de programari
Com que estem fent servir Excel en aquest projecte, utilitzarem la referència de muntatge de Microsoft Office Interop Excel.
Per instal·lar-lo, feu clic dret a les referències a l’explorador de solucions i seleccioneu Gestioneu els paquets NuGet . Escriviu Microsoft Office Interop Excel a la barra de cerca i el resultat de la cerca mostrarà el paquet requerit.
Un cop obtingueu Microsoft Office Interop Excel, feu clic a Botó d'instal·lació per instal·lar-lo.
Un cop finalitzada la instal·lació, podeu veure que Microsoft Office Interop Excel s'ha afegit a la llista de referències de muntatge del projecte.
Per començar, assignem primer els diferents elements Excel.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Aquí hem assignat valors a l’aplicació Excel, al llibre de treball Excel i al full de treball Excel. Un cop definits, els utilitzarem en els passos següents per accedir als valors del full Excel.
Quins són els passos que seguim generalment si volem obtenir un valor d'un full Excel?
Primer, accedim a l’aplicació Excel, després obrim el llibre Excel i el full de treball Excel i, posteriorment, localitzem l’element en funció dels seus valors de fila i columna. Aquí farem alguna cosa similar.
Aquest codi accedirà a l'aplicació Excel.
xlApp = new Microsoft.Office.Interop.Excel.Application();
Aquest codi obrirà el llibre de treball amb el nom donat a la ubicació indicada.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
Ara, escriurem un codi per accedir al full de treball concret dins del llibre. Tenim un full de treball anomenat 'Sheet1' (el nom per defecte al full Excel)
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
Com hem accedit al full de treball, ara el següent pas serà trobar la columna i les dades correctes. En primer lloc, buscarem una columna amb la 'Clau'.
Per exemple, En primer lloc, cerquem la columna amb el valor 'FirstName'. Un cop trobem el valor, extraurem el número de columna. Aleshores, com sabem, la primera fila conté l’encapçalament i la segona fila conté les nostres dades, per tant, utilitzarem el número de columna i el número de fila per extreure les dades exactes.
D’aquesta manera s’emmagatzemarà el número de columna del nom a la variable.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
Ara farem servir el número de columna de FirstName per extreure el valor de la cel·la que hi ha a sota. Com se sap, el mètode de valor només retornarà el tipus de cadena, de manera que l’emmagatzemarem en una variable de cadena.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
Ara tenim el valor del primer nom emmagatzemat a la variable. Per tant, utilitzarem l’objecte empleat que hem definit al nostre mètode per assignar el valor.
Elimineu tots els valors que hàgiu assignat / codificat a la classe Employee, ja que els retornarem amb el nostre mètode.
Però hi ha un problema amb això, el '.Text' La funció sempre retorna un valor de cadena. Per tant, si volem extreure el valor d’un identificador d’empleat que és un enter, també s’extreurà com una cadena. Per tant, haurem de convertir aquesta cadena en un enter abans d’assignar-la a l’objecte JSON. Per fer-ho analitzarem directament el valor a un enter.
Per tant, el codi per a empleatID es mostrarà com es mostra a continuació:
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
Al final, analitzarem el valor de la cadena en un enter, ja que el nostre JSON reconeix empleatID com un valor enter.
Per tant, el codi general per obtenir dades de totes les 4 columnes serà el següent:
Ara, tot el que hem de fer és assignar les variables que hem creat amb les dades del full Excel als objectes dels empleats.
Tot està preparat, ara construirem el projecte. Un cop finalitzada la compilació, executarem el programa per generar el JSON.
Es generarà el següent JSON:
Ara, comparem les dades del JSON amb les del full Excel.
Com es mostra més amunt, les dades JSON coincideixen amb les dades de les 4 columnes del full Excel. Validem el JSON que ha generat el nostre programa. Per fer-ho tornarem a visitar-ho aquí . Simplement copieu tot el contingut JSON a l'àrea de text i feu clic a 'Validar JSON' botó.
Hurra! Hem creat un JSON vàlid amb les dades de l’excel.
Feu exercici per a vosaltres:
Creeu un JSON imbricat de tres nivells. Creeu una empresa JSON pare i anideu l’empleat JSON que hem creat anteriorment juntament amb el cotxe JSON.
Conclusió
Hem arribat al final del nostre tutorial. Ha estat un tutorial llarg però hem après diverses coses. Vam aprendre a crear un JSON senzill mitjançant la programació c # i els avantatges de classificar diferents conjunts de dades JSON en una classe diferent. També hem utilitzat les nostres habilitats de programació per afegir matrius i fins i tot una altra estructura JSON dins d’un JSON pare.
Per últim, hem treballat en les maneres d’obtenir dades d’una altra font de dades per alimentar els valors a les claus JSON.
Espero que tots hagueu gaudit de tota la sèrie de tutorials JSON fins ara.
Tutorial # 4: Ús de JSON per a proves d’interfície
Lectura recomanada
- Com crear objectes JSON mitjançant el codi C # (creació de la JSON part 1)
- Preguntes i respostes principals de l’entrevista JSON
- Ús de JSON per a proves d’interfície
- Tutorial JSON: Introducció i una guia completa per a principiants
- Estructura de dades de la cua en C ++ amb il·lustració
- MongoDB Crea una còpia de seguretat de la base de dades
- Estructura de dades de pila en C ++ amb il·lustració
- Estructura de dades de llistes enllaçades circulars en C ++ amb il·lustració