how create json structure using c
Opprette JSON Structure (Del-2):
I vår forrige opplæring diskuterte vi lage en enkel JSON-fil ved hjelp av eksempeldatasett .
Vi ble også kjent med detaljene om bruken av et json.Net-rammeverk for serialisering av data til JSON-format. Vi utnyttet C # og Visual Studio for å lage en enkel konsollapplikasjon for å bruke data og nøkkelverdier levert av oss, og deretter serialiserte disse nøkkelverdiene til JSON-struktur. La oss nå se hva denne veiledningen vil dekke når vi går videre.
I denne opplæringen vil vi diskutere måtene å skape mer kompleks JSON-struktur. Vi vil lage matriser med flere datasett og også se på måtene å lage nestet struktur i JSON.
De fleste av JSON-filene som brukes til dataoverføring mellom forskjellige systemer inneholder mer komplekse datastrukturer. Dermed vil lære om den komplekse JSON-strukturen hjelpe deg med å lage testdata basert på JSON-skjemakravene.
Hva du vil lære:
- Skrive koden
- Legge til matrise med flere data i JSON
- Utføre operasjoner på data før du tilordner det til JSON-nøkler
- Opprette en nestet JSON-struktur
- Bruke et Excel-ark som datakilde for JSON
- Konklusjon
- Anbefalt lesing
Skrive koden
Vi vil referere til vårt forrige innlegg i denne opplæringen. Derfor vil jeg foreslå alle å gå gjennom den tidligere opplæringen først, før du går videre til denne.
Vi vil bruke de samme JSON-dataene som vi brukte i vår forrige opplæring. Vi vil også følge opp det samme settet med kode som vi skrev for vårt forrige JSON-eksempel.
La oss begynne nå. !!
Legge til matrise med flere data i JSON
For å legge til en matrise i JSON, la oss legge til en arraynøkkel i vårt forrige datasett.
Datasettet vårt blir som vist nedenfor:
Å legge til et arrayobjekt i JSON ligner på det å legge til andre nøkkelverdier. Verdier kan tildeles direkte på tidspunktet for erklæring av selve matrisen. Når verdiene er tilordnet en matrise, vil JSON newtonsoft serieisere objektene i nøkkelverdipar.
For å legge til Array i JSON, vil vi erklære det i 'Ansatt' klassen selv. (Se vår forrige opplæring for detaljer)
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' }; } }
Som du ser har vi direkte erklært Array i medarbeiderklassen. Ikke gjør noen endringer i hovedmetoden. Å lage en annen klasse for JSON-objekt vil hjelpe oss med å holde objekter organisert.
Når det er endringer i JSON-strukturen eller når du vil legge til et nytt datasett, er alt du trenger å gjøre bare å gjøre endringene i den aktuelle klassefilen i stedet for å gjøre endringer over hele prosjektet. Dette betyr at hovedmetoden din vil være den samme mesteparten av tiden, og endringene vil bare skje i klassene.
La oss kjøre programmet og lage vår JSON-fil med matrisen.
Kopier nå innholdet og lim inn her for å validere om den opprettede JSON er gyldig eller ikke.
Klikk på Bekreft JSON for å validere den. JSON-nøkkelverdiparene vil bli arrangert og validering vil bli utført på det gitte datasettet.
Utføre operasjoner på data før du tilordner det til JSON-nøkler
La oss anta at vi har noen data, og vi vil utføre noen operasjoner på disse dataene før vi tilordner dem som verdier til JSON-tastene.
I så fall, hvordan skal vi gjøre det?
For eksempel: La oss si at medarbeider-ID-en som vi sendte til JSON er laget av to deler, de første tre bokstavene angir stedskoden og de siste 4 sifrene angir ansattens nummer. Sammenkobling av begge deler vil gi oss ansattes ID til en ansatt.
I tilfelle hvis vi mottar posisjonskoden og medarbeidernummeret hver for seg, må vi sammenkoble dem for å danne en ansatt-ID. Først da kan vi føre den gjennom JSON.
For å overvinne denne typen scenarier, må vi utføre operasjoner på dataene før vi tilordner dem til en nøkkel.
La oss se på hvordan dette kan gjøres.
La oss gå tilbake til medarbeiderklassen vår og lage en annen klasse der vi vil utføre alle operasjonene.
Her vil vi opprette en annen klasse for å inneholde og utføre operasjonene på de ansattes data.
La oss lage en ny klasse 'EmployeeData'.
Klassen er opprettet, og la oss nå opprette en metode med offentlig tilgangsspesifikator og returtype som vår klasse 'Ansatt'. Vi har gitt metodenavnet som “EmployeeDataOps” . Du kan imidlertid oppgi ditt eget navn. For å gjøre dette enklere, sender jeg ingen parametere innenfor denne metoden.
Da vi beskrev returtypen som en klasse, må vi returnere en forekomst av medarbeiderklassen. For å gjøre det vil vi lage et klasseobjekt inne i metoden.
Her har vi opprettet et objekt for medarbeiderklassen med navnet EmpObj og på slutten av metoden har vi returnert objektet.
La oss definere to heltall i EmployeeData-klassen som representerer full plasseringskode og ansattnummer. Når de er erklært, vil vi bruke den til å utføre operasjoner og deretter tildele verdier til de respektive tastene.
int locationCode = 569; int employeeNumber = 8523;
Nå som vi har posisjonskoden og ansattnummeret, kan vi utføre operasjoner på dem for å finne ansattes ID. For å gjøre dette vil vi skrive en enkel kode for å sammenkoble begge heltallene.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
Dette vil ganske enkelt sammenkoble begge heltallene som danner ansattes ID. Vi har lagret ansattes ID under variabelen “EmpID” , og nå vil vi overføre denne variabelen til “ansatteID” i EmpObj.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
Hele eksempelkoden vil se ut som vist nedenfor:
flette sorteringsimplementering c ++
Har du lagt merke til at vi har fjernet verdien som vi tidligere tildelte variabelen medarbeider-ID i medarbeiderklassen? Vi gjorde dette mens vi returnerer verdien fra EmployeeDataOps () metode. Derfor vil dataene til variablene mates fra selve denne metoden. Dette fjerner nødvendigheten av å direkte deklarere verdier.
gratis nettbasert klokkeprogramvare
Som vi er ferdige med metoden nå, må vi legge til en forekomst av denne metoden i hovedmetoden slik at denne metoden kan kalles.
For å gjøre dette vil vi opprette et annet klasseobjekt i hovedmetoden for “EmployeeData” klasse.
EmployeeData empData = new EmployeeData();
Når vi har opprettet et klasseobjekt, vil vi nå tildele metoden i denne klassen til Emp-objektet som vi opprettet tidligere for medarbeiderklassen.
emp = empData.EmployeeDataOps();
Til slutt vil koden i hovedmetoden ligne slik:
La oss sette noen testdata:
Stedskode = 123
Antall ansatte = 9874
Vi vil sette disse dataene i koden og med de endelige endringene i hovedmetoden. Vi har nå fullført koden vår. La oss nå kjøre koden og validere JSON.
Dette er JSON som ble opprettet:
Som du kan se, har den nye sammenkoblede verdien for ansattes ID blitt lagt inn i JSON-verdien.
La oss kopiere og lime inn denne JSON her for å validere strukturen. Sett teksten inn på JSON-loftsiden.
Bruk valideringsknappen for å validere strukturen som vist nedenfor:
Opprette en nestet JSON-struktur
Eksemplet vi hittil har diskutert, bruker hovedsakelig streng- og numeriske verdier i en matrise eller et objekt. Men JSON kan også brukes til å uttrykke et helt JSON-objekt ved å bruke samme forestilling som et array-element. Objektmedlemmene i listen kan bruke sine egne objekter og arraynøkler.
I Introduksjon til JSON, som er en av våre tidligere opplæringsprogrammer, så vi først på hvordan en nestet JSON ser ut. I denne veiledningen antar vi at den ansatte også har en bil, og JSON bør også inneholde alle detaljene om den ansatte bilen.
Så JSON-strukturen som vi får på slutten, vil være lik denne:
Her har vi den ansatte JSON med alle dataene, så har vi også et Car JSON-objekt nestet inne i den ansatte JSON. Bilobjekt har sitt eget sett med nøkler og verdier.
La oss prøve å lage denne JSON programmatisk.
For dette vil vi starte med samme JSON som vi opprettet i vår forrige opplæring. For å gjøre det enklere vil vi lage det nye JSON-objektet (dvs. Car JSON) i en ny klasse. Vi vil legge til en ny klassebil og vil legge til alle gjenstandene i denne klassen med en offentlig tilgangsspesifikator.
Nå kan vi enten legge til verdien direkte her, eller så kan vi skrive en ny klasse og lage en tilpasset metode med en klasseobjektreturtype for å tilordne verdiene som ligner på det vi gjorde i forrige opplæring. For enkelhets skyld tildeler vi verdien direkte til nøkkelvariablene.
Nå har vi opprettet en ny klasse med objektene og verdiene. I neste trinn vil vi legge dette til JSON-struktur for ansatte, slik at nøkkelverdiene fra bilklassen når JSON-serialiseringen skjer, også skal serieiseres sammen med arbeidstakerklassen som nestet JSON.
For å gjøre det, må vi først legge til en klassetypebil i medarbeiderklassen. Dette objektet vil bli brukt til å lagre verdiene som er tilstede i bilklassen.
Som vist ovenfor har vi tilordnet den nye variabelen med datatypen som bilklasse. La oss nå gå til EmployeeDataOps () -metoden som vi opprettet i EmployeeData-klassen. Vi skriver koden for å kalle variablene og verdiene fra bilklassen.
La oss først lage et klasseobjekt for bilklasse:
Car carObj = new Car();
Dette objektet vil inneholde alle dataene fra bilklassen. Når vi har deklarert alle dataene fra bilklassen til dette objektet, vil neste trinn være å tilordne disse dataene (dataene inne i bilobjektet) til bilvariabelen som vi opprettet for å oppbevare disse dataene.
For å gjøre dette, bruker vi ganske enkelt Employee-objektet som vi opprettet for å få tilgang til bilvariabelen. Og så kan vi direkte tildele bilobjektet med dataene til bilvariabelen.
EmpObj.car = carObj;
Det er det. Vi har opprettet en variabel i en klasse og deretter opprettet et annet objekt for å få tilgang til verdien fra en annen klasse, så tilordnet vi verdien til den første variabelen.
La oss nå kjøre programmet vårt og se om det kan skape ønsket JSON.
Som vist ovenfor ser vi at en bil-json-nøkkel er opprettet, og den inneholder alle dataene vi skrev inn i bilklassen som nøkkel og verdier. Nå vil vi igjen kopiere JSON-innholdet og navigere her for å validere JSON.
Bare kopier alt JSON-innholdet til tekstområdet og klikk på “Valider JSON ”-Knappen.
Så JSONlint-nettstedet har ordnet dataene våre og validert dem perfekt. Vi kan se at 'bil' -objektet er ordnet i JSON-strukturen slik vi ønsket. Ved å bruke den samme prosessen kan du opprette flere nivåer av nestet JSON. Bare fortsett å legge til JSON-objektet i klassen og tilordne verdien til en klassevariabel.
Som du kan se, trenger vi ikke engang å endre noen kode i hovedmetoden.
Bruke et Excel-ark som datakilde for JSON
I våre tidligere veiledninger diskuterte vi flere måter å lage forskjellige strukturer på JSON. Men det var et stort problem med alle våre strukturer, vi var alltid harde med å kode verdiene for tastene.
I denne opplæringen vil vi diskutere måtene vi kan bruke et Excel-ark for å mate dataene til JSON-tastene. Jeg vil anbefale deg å gå gjennom alle veiledningene vi diskuterte tidligere før du fortsetter med denne, da vi skal diskutere den samme koden som vi skrev i forrige veiledning.
Å gå trinnvis vil hjelpe deg med å forstå hele konseptet på en bedre måte.
Jeg håper dere har forstått den grunnleggende koden for å lage en JSON, i denne delen vil vi videreføre den samme kodestrukturen.
La oss først lage en excel-fil med JSON-data.
Vi har opprettet en medarbeiderData.xlsx-fil med følgende detaljer.
Før vi begynner å skrive koden for å hente ut verdier fra excel, må vi legge til en monteringsreferanse til prosjektet vårt. For å få tilgang til kontorobjekt, tilbyr C # oss Microsoft Office Interop. Disse er ganske nyttige for å gi enkel tilgang til kontorobjektene.
beste harddisken data utvinning selskap
Ettersom vi bruker excel i dette prosjektet, vil vi bruke referansene til samlingen av Microsoft Office Interop Excel.
For å installere det, høyreklikk på Referanser i løsningsutforskeren din, og velg deretter Administrer NuGet-pakker . Skriv Microsoft Office Interop Excel i søkefeltet, og søkeresultatet viser den nødvendige pakken.
Når du får Microsoft Office Interop Excel, klikker du på Installer-knappen for å installere den.
Når installasjonen er fullført, kan du se at Microsoft Office Interop Excel er lagt til i listen over monteringsreferanser i prosjektet.
Til å begynne med, la oss først tildele de forskjellige excel-elementene.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Her har vi tilordnet verdier til Excel-applikasjonen, Excel-arbeidsbok og Excel-regneark. Når disse er definert, vil vi bruke disse i de neste trinnene for å få tilgang til verdiene i excel-arket.
Hva er trinnene vi generelt følger, hvis vi ønsker å hente en verdi fra et Excel-ark?
Først får vi tilgang til Excel-applikasjonen, så åpner vi Excel-arbeidsboken og Excel-regnearket, og senere finner vi elementet basert på rad- og kolonneverdiene. Vi skal gjøre noe lignende her.
Denne koden får tilgang til excel-applikasjonen.
xlApp = new Microsoft.Office.Interop.Excel.Application();
Denne koden åpner arbeidsboken med det oppgitte navnet tilstede på det angitte stedet.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
Nå skal vi skrive en kode for å få tilgang til det aktuelle regnearket i arbeidsboken. Vi har et regneark med navnet “Sheet1” (standardnavnet i excel-arket)
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
Når vi har åpnet arbeidsarket, vil neste trinn være å finne riktig kolonne og riktige data. Først vil vi søke etter en kolonne med 'Nøkkelen'.
For eksempel, La oss først søke etter kolonnen med verdien som «FirstName». Når vi har funnet verdien, trekker vi ut kolonnetallet. Så som vi vet inneholder den første raden overskriften og den andre raden inneholder dataene våre, så vi vil bruke kolonnenummeret og radnummeret til å trekke ut de eksakte dataene.
Dette lagrer kolonnenummeret for FirstName i variabelen.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
Nå vil vi bruke kolonnenummeret til FirstName for å trekke ut verdien fra cellen under den. Som kjent vil verdien metoden bare returnere strengtypen, så vi lagrer denne i en strengvariabel.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
Nå har vi verdien av fornavnet lagret i variabelen. Så vi vil bruke ansattobjektet som vi definerte i vår metode for å tildele verdien.
Fjern alle verdiene du har tildelt / hardkodet i medarbeiderklassen, da vi returnerer verdiene ved hjelp av vår metode.
Men det er ett problem med dette, '.Tekst' funksjon returnerer alltid en strengverdi. Så hvis vi ønsker å trekke ut verdien av en ansatt-ID som er et heltall, blir den også ekstrahert som en streng. Så vi må konvertere denne strengen til et helt tall før vi tildeler den til JSON-objektet. For å gjøre det vil vi direkte analysere verdien til et helt tall.
Så koden for medarbeider-ID vil se ut som vist nedenfor:
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
På slutten vil vi analysere strengverdien til et helt tall ettersom vår JSON gjenkjenner medarbeider-ID som et heltall.
Så den totale koden for å hente data for alle 4 kolonnene vil se ut som vist nedenfor:
Nå er alt vi trenger å gjøre å tilordne variablene vi opprettet med dataene fra excel-arket til de ansatte objektene.
Alt er satt, vi skal nå bygge prosjektet. Når bygningen er fullført, vil vi kjøre programmet for å generere JSON.
Følgende JSON vil bli generert:
La oss nå sammenligne dataene fra JSON med det i excel-arket.
Som vist ovenfor samsvarer JSON-dataene med dataene i alle 4 kolonnene i excel-arket. La oss validere JSON som programmet vårt har generert. For å gjøre det vil vi igjen besøke her . Bare kopier alt JSON-innholdet til tekstområdet og klikk på “Valider JSON” knapp.
Hurra! Vi har opprettet en gyldig JSON ved hjelp av dataene fra excel.
Trening for deg:
Lag en tre-nivå nestet JSON. Lag et foreldre-JSON-selskap og nest den ansatte JSON som vi opprettet tidligere sammen med bilen JSON.
Konklusjon
Vi har nå nådd slutten av opplæringen. Det har vært en lang veiledning, men vi har lært flere ting. Vi lærte å lage en enkel JSON ved hjelp av c # programmering og fordelene ved å kategorisere forskjellige sett med JSON-data i en annen klasse. Vi brukte også våre programmeringsferdigheter for å legge til matriser og til og med en annen JSON-struktur inne i en foreldre-JSON.
Til slutt jobbet vi med måtene å hente data fra en annen datakilde for å mate verdiene til JSON-tastene.
Håper dere alle likte hele serien med JSON-opplæring så langt.
Opplæring # 4: Bruker JSON for grensesnitttesting
Anbefalt lesing
- Hvordan lage JSON-objekter ved hjelp av C # -kode (JSON Creation Part 1)
- Topp JSON intervju spørsmål og svar
- Bruker JSON for grensesnitttesting
- JSON Tutorial: Introduksjon og en komplett guide for nybegynnere
- Kødatastruktur i C ++ med illustrasjon
- MongoDB Create Database Backup
- Stakk datastruktur i C ++ med illustrasjon
- Sirkulær sammenkoblet liste Datastruktur i C ++ med illustrasjon