how create json structure using c
Skapa JSON-struktur (del-2):
I vår tidigare handledning diskuterade vi skapa en enkel JSON-fil med hjälp av exempeldatauppsättningar .
Vi lärde oss också detaljerna om användningen av ett json.Net-ramverk för serialisering av data till JSON-format. Vi utnyttjade C # och Visual Studio för att skapa en enkel konsolapplikation för att använda data och nyckelvärden från oss och serieiserade sedan dessa nyckelvärden till JSON-strukturen. Låt oss nu se vad denna handledning kommer att täcka när vi går vidare.
I denna handledning kommer vi att diskutera sätten att skapa mer komplex JSON-struktur. Vi skapar matriser med flera datauppsättningar och tittar också på hur man skapar kapslad struktur i JSON.
De flesta JSON-filer som används för dataöverföring mellan olika system innehåller mer komplexa datastrukturer. Därigenom hjälper dig att lära dig mer om den komplexa JSON-strukturen att skapa testdata baserat på JSON-schemakraven.
Vad du kommer att lära dig:
- Skriva koden
- Lägga till Array med flera data i JSON
- Utföra operationer på data innan du tilldelar det till JSON-tangenter
- Skapa en kapslad JSON-struktur
- Använda ett Excel-ark som datakälla för JSON
- Slutsats
- Rekommenderad läsning
Skriva koden
Vi kommer att hänvisa till vårt tidigare inlägg i denna handledning. Därför skulle jag föreslå alla att gå igenom den tidigare handboken först innan du fortsätter med den här.
Vi kommer att använda samma JSON-data som vi använde i vår tidigare handledning. Vi kommer också att följa upp samma koduppsättning som vi skrev för vårt tidigare JSON-exempel.
Låt oss börja nu. !!
Lägga till Array med flera data i JSON
För att lägga till en array i JSON, låt oss lägga till en arraynyckel i vår tidigare datamängd.
Vår datamängd blir som visas nedan:
Att lägga till ett arrayobjekt till JSON liknar det att lägga till andra nyckelvärden. Värden kan tilldelas direkt vid tidpunkten för själva matrisen. När värdena har tilldelats en matris kommer JSON newtonsoft att serieera objekten i nyckel-värdepar.
För att lägga till Array i JSON, kommer vi att förklara det i 'Anställd' klass själv. (Se vår tidigare handledning för mer information)
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 direkt förklarat Array i klassen Anställda. Gör inga ändringar i huvudmetoden. Att skapa en annan klass för JSON-objekt hjälper oss att hålla objekt organiserade.
Närhelst det finns ändringar i JSON-strukturen eller när du vill lägga till ytterligare en uppsättning data, behöver du bara göra ändringarna i den specifika klassfilen snarare än att göra ändringar över hela projektet. Detta innebär att din huvudmetod kommer att förbli densamma för det mesta och ändringarna kommer bara att ske inom klasserna.
Låt oss köra programmet och skapa vår JSON-fil med arrayen.
Kopiera nu innehållet och klistra in här för att validera om den skapade JSON är giltig eller inte.
Klicka på Validera JSON för att validera den. JSON-nyckel-värdeparen kommer att ordnas och valideringen kommer att utföras på den angivna datamängden.
Utföra operationer på data innan du tilldelar det till JSON-tangenter
Låt oss anta att vi har lite data och vi vill utföra vissa operationer på dessa data innan vi tilldelar dem som värden till JSON-tangenterna.
I ett sådant fall, hur ska vi göra det?
Till exempel: Låt oss säga att det anställd-ID som vi skickade till JSON består av två delar, de första tre bokstäverna betecknar platskoden och de sista fyra siffrorna betecknar anställd. Att sammanfoga båda ger oss anställdas ID för en anställd.
Om vi får platskoden och anställd nummer separat måste vi sammanfoga dem för att bilda ett anställnings-ID. Först då kan vi skicka det genom JSON.
För att övervinna denna typ av scenarier måste vi utföra operationer på data innan vi tilldelar den till en nyckel.
Låt oss titta på hur detta kan göras.
Låt oss gå tillbaka till vår medarbetarklass och skapa en annan klass, där vi kommer att utföra alla operationer.
Här skapar vi en annan klass för att innehålla och utföra operationerna på medarbetardata.
Låt oss skapa en ny klass 'EmployeeData'.
Klassen har skapats och låt oss nu skapa en metod med allmän åtkomstspecifikator och returtyp som vår klass 'Anställd'. Vi har angett metodnamnet som “EmployeeDataOps” . Du kan dock ange ditt eget namn. För att göra detta enklare skickar jag ingen parameter inom denna metod.
Eftersom vi beskrev returtypen som en klass måste vi returnera en instans av anställdklassen. För att göra det skapar vi ett klassobjekt inuti metoden.
Här har vi skapat ett objekt för medarbetarklassen med namnet EmpObj och i slutet av metoden har vi returnerat objektet.
Låt oss definiera två heltal i klassen EmployeeData som representerar hela platskoden och anställd. När de väl deklareras kommer vi att använda den för att utföra operationer och sedan tilldela värden till respektive tangenter.
int locationCode = 569; int employeeNumber = 8523;
Nu när vi har positionskoden och anställd nummer kan vi utföra åtgärder på dem för att hitta anställd ID. För att göra detta kommer vi att skriva en enkel kod för att sammanfoga båda heltalen.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
Detta sammanfogar helt enkelt båda de heltal som bildar anställds-ID: t. Vi har lagrat medarbetar-ID under variabeln “EmpID” , och nu skickar vi denna variabel till “medarbetarID” i EmpObj.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
Hela provkoden ser ut som visas nedan:
bästa gratis rengöringsprogramvara för Windows 10
Märkte du att vi har tagit bort det värde som vi tidigare tilldelade variabeln medarbetarID i klassen Anställd? Vi gjorde detta eftersom vi returnerar värdet från EmployeeDataOps () metod. Följaktligen matas data till variablerna från själva denna metod. Detta tar bort nödvändigheten av att direkt deklarera värden.
gratis webbaserad klockprogramvara
Eftersom vi är färdiga med metoden nu måste vi lägga till en instans av denna metod till huvudmetoden så att den här metoden kan anropas.
För att göra detta skapar vi ytterligare ett klassobjekt i huvudmetoden för “EmployeeData” klass.
EmployeeData empData = new EmployeeData();
När vi väl har skapat ett klassobjekt kommer vi nu att tilldela metoden inuti denna klass till Emp-objektet som vi skapade tidigare för medarbetarklassen.
emp = empData.EmployeeDataOps();
Slutligen kommer koden i huvudmetoden att se ut så här:
Låt oss lägga lite testdata:
Plats kod = 123
Antal anställda = 9874
Vi lägger in dessa data i koden och med de sista ändringarna i huvudmetoden. Vi har nu slutfört vår kod. Låt oss nu köra koden och validera vår JSON.
Detta är JSON som skapades:
Som du kan se har det nya sammanhängande värdet för medarbetar-ID skrivits in i JSON-värdet.
Låt oss kopiera och klistra in den här JSON här för att validera dess struktur. Lägg in texten på JSON-lintwebbplatsen.
Använd valideringsknappen för att validera strukturen enligt nedan:
Skapa en kapslad JSON-struktur
Exemplet som vi diskuterade hittills använder huvudsakligen sträng- och numeriska värden i en matris eller ett objekt. Men JSON kan också användas för att uttrycka ett helt JSON-objekt genom att använda samma uppfattning som ett arrayelement. Objektmedlemmarna i listan kan använda sina egna objekt och arraynycklar.
I Introduktion till JSON, som är en av våra tidigare handledning, tittade vi först på hur en kapslad JSON ser ut. I den självstudien antar vi att den anställde också har en bil och att JSON också bör innehålla alla detaljer om anställdes bil.
Så JSON-strukturen som vi får i slutet kommer att likna den här:
Här har vi den anställde JSON med all data, sedan har vi också ett JSON-objekt i bilen inbäddat i den anställde JSON. Bilobjekt har sin egen uppsättning nycklar och värden.
Låt oss försöka skapa denna JSON programmatiskt.
För detta kommer vi att börja med samma JSON som vi skapade i vår tidigare handledning. För att göra det enklare skapar vi det nya JSON-objektet (dvs. Car JSON) i en ny klass. Vi lägger till en ny klassbil och kommer att lägga till alla objekt i denna klass med en allmän åtkomstspecifikator.
Nu kan vi antingen lägga till värdet direkt här eller så kan vi skriva en ny klass och skapa en anpassad metod med en klassobjektreturtyp för att tilldela värden som liknar vad vi gjorde i föregående handledning. För enkelhets skull tilldelar vi värdet direkt till nyckelvariablerna.
Nu har vi skapat en ny klass med objekten och värdena. I nästa steg lägger vi till detta i JSON-strukturen för anställda, så att nyckelvärdena från bilklassen när JSON-serieringen sker, bör också serieseras tillsammans med arbetstagarklassen som kapslad JSON.
För att kunna göra det måste vi först lägga till en klassbilsbil i klassen Anställda. Detta objekt kommer att användas för att lagra de värden som finns i bilklassen.
Som visas ovan har vi tilldelat den nya variabeln med datatyp som bilklass. Låt oss gå till metoden EmployeeDataOps () som vi skapade i klassen EmployeeData. Vi skriver koden för att anropa variabler och värden från bilklassen.
Låt oss först skapa ett klassobjekt för bilklass:
Car carObj = new Car();
Detta objekt kommer att innehålla all data från bilklassen. När vi har deklarerat all data från bilklassen till det här objektet blir nästa steg att tilldela dessa data (data som finns i bilobjektet) till den bilvariabel som vi skapade för att hålla dessa data.
För att göra detta använder vi helt enkelt det anställdobjekt som vi skapade för att komma åt bilvariabeln. Och sedan kan vi direkt tilldela bilobjektet med data till bilvariabeln.
EmpObj.car = carObj;
Det är allt. Vi har skapat en variabel i en klass och sedan skapat ett annat objekt för att komma åt värdet från en annan klass, sedan tilldelade vi värdet till den första variabeln.
Låt oss nu köra vårt program och se om det kan skapa önskad JSON.
Som visas ovan ser vi att en json-nyckel har skapats och den innehåller all data som vi angav i bilklassen som nyckel och värden. Nu kopierar vi igen JSON-innehållet och navigerar här för att validera JSON.
Kopiera bara allt JSON-innehåll till textområdet och klicka på “Validera JSON ' knapp.
Så JSONlint-webbplatsen har ordnat våra uppgifter och validerat den perfekt. Vi kan se att 'bil' -objektet har ordnats i JSON-strukturen som vi krävde. Med samma process kan du skapa flera nivåer av kapslad JSON. Fortsätt bara lägga till JSON-objektet till klassen och tilldela dess värde till en klassvariabel.
Som du kan se behöver vi inte ens ändra någon kod i vår huvudmetod.
Använda ett Excel-ark som datakälla för JSON
I våra tidigare handledning diskuterade vi flera sätt att skapa olika strukturer för JSON. Men det var en stor fråga med alla våra strukturer, vi var alltid svåra att koda värdena för tangenterna.
I den här handledningen kommer vi att diskutera hur vi kan använda ett Excel-ark för att mata data till JSON-tangenterna. Jag skulle rekommendera dig att gå igenom alla tutorials som vi diskuterade tidigare innan du fortsätter med den här eftersom vi kommer att diskutera samma kod som vi skrev i tidigare tutorials.
Att gå steg för steg hjälper dig att förstå hela konceptet på ett bättre sätt.
Jag hoppas att ni har förstått grundkoden för att skapa en JSON, i den här delen kommer vi att ta fram samma kodstruktur.
Låt oss först skapa en excel-fil med JSON-data.
Vi har skapat en medarbetardata.xlsx-fil med följande detaljer.
Innan vi börjar skriva koden för att extrahera värden från excel måste vi lägga till en monteringsreferens till vårt projekt. För att komma åt kontorsobjekt erbjuder C # oss Microsoft Office Interop. Dessa är ganska användbara för att ge enkel åtkomst till kontorsobjekten.
Java-serversidan programmeringsintervjufrågor
Eftersom vi använder excel i detta projekt kommer vi att använda Microsoft Office Interop Excel monteringsreferens.
För att installera det, högerklicka på Referenser i din lösningsutforskare och välj sedan Hantera NuGet-paket . Skriv Microsoft Office Interop Excel i sökfältet och sökresultatet visar det önskade paketet.
När du har fått Microsoft Office Interop Excel klickar du på Installera-knappen för att installera den.
När installationen är klar kan du se att Microsoft Office Interop Excel har lagts till i listan över monteringsreferenser i projektet.
Till att börja med tilldelar vi först de olika excel-elementen.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Här har vi tilldelat värden till Excel-applikationen, Excel-arbetsboken och Excel-kalkylbladet. När dessa har definierats kommer vi att använda dessa i våra nästa steg för att komma åt värdena i excel-arket.
Vilka är stegen som vi brukar följa om vi vill hämta ett värde från ett Excel-ark?
Först kommer vi åt excel-applikationen, sedan öppnar vi Excel-arbetsboken och Excel-kalkylbladet och senare hittar vi elementet baserat på dess rad- och kolumnvärden. Vi kommer att göra något liknande här.
Den här koden kommer åt Excel-applikationen.
xlApp = new Microsoft.Office.Interop.Excel.Application();
Den här koden öppnar arbetsboken med det angivna namnet på den angivna platsen.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
Nu kommer vi att skriva en kod för att komma åt det specifika kalkylbladet i arbetsboken. Vi har ett kalkylblad med namnet “Sheet1” (standardnamnet i Excel-bladet)
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
När vi har öppnat arbetsbladet blir nästa steg att hitta rätt kolumn och rätt data. Först ska vi söka efter en kolumn med 'Key'.
Till exempel, Låt oss först söka efter kolumnen med värdet som 'Förnamn'. När vi väl har hittat värdet extraherar vi kolumnnumret. Sedan som vi vet innehåller den första raden rubriken och den andra raden innehåller våra data, så kommer vi att använda kolumnnumret och radnumret för att extrahera exakta data.
Detta lagrar kolumnnumret för FirstName i variabeln.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
Nu kommer vi att använda kolumnnumret i FirstName för att extrahera värdet från cellen nedanför det. Som vet kommer värdemetoden bara att returnera strängtyp, så vi lagrar den i en strängvariabel.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
Nu har vi värdet på förnamnet lagrat i variabeln. Så vi använder det anställdsobjekt som vi definierade i vår metod för att tilldela värdet.
Ta bort alla värden som du har tilldelat / hårdkodat i klassen Anställd eftersom vi kommer att returnera värdena med vår metod.
Men det finns en fråga med detta, '.Text' funktionen returnerar alltid ett strängvärde. Så om vi vill extrahera värdet på ett anställds-ID som är ett heltal kommer det också att extraheras som en sträng. Så vi måste konvertera den här strängen till ett heltal innan vi tilldelar den till JSON-objektet. För att göra det analyserar vi värdet direkt till ett heltal.
Så koden för medarbetar-ID kommer att se ut som visas nedan:
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
I slutet kommer vi att analysera strängvärdet till ett heltal eftersom vår JSON känner igen anställd-ID som ett heltal.
Så den övergripande koden för att hämta data för alla 4 kolumner kommer att se ut som visas nedan:
Nu är allt vi behöver göra att tilldela variablerna som vi skapade med data från excel-arket till anställdens objekt.
Allt är klart, vi ska nu bygga projektet. När byggnaden är klar kommer vi att köra programmet för att generera JSON.
Följande JSON kommer att genereras:
Låt oss nu jämföra data från JSON med det i excel-arket.
Som visas ovan matchar JSON-data data i alla fyra kolumner i excel-arket. Låt oss verifiera den JSON som vårt program har genererat. För att göra det kommer vi igen att besöka här . Kopiera bara allt JSON-innehåll till textområdet och klicka på “Validera JSON” knapp.
hurra! Vi har skapat en giltig JSON med hjälp av data från excel.
Övning för dig:
Skapa en kapslad JSON med tre nivåer. Skapa ett förälder JSON-företag och hysa medarbetaren JSON som vi skapade tidigare tillsammans med bilen JSON.
Slutsats
Vi har nu nått slutet av vår handledning. Det har varit en lång handledning men vi lärde oss flera saker. Vi lärde oss att skapa en enkel JSON med c # programmering och fördelarna med att kategorisera olika uppsättningar JSON-data i en annan klass. Vi använde också våra programmeringsfärdigheter för att lägga till matriser och till och med en annan JSON-struktur inuti en förälder JSON.
Slutligen arbetade vi med sätten att hämta data från en annan datakälla för att mata värdena till JSON-tangenterna.
Hoppas att ni alla har haft hela serien av JSON-tutorials hittills.
Handledning nr 4: Använda JSON för gränssnitttestning
Rekommenderad läsning
- Hur man skapar JSON-objekt med C # -kod (JSON Creation Part 1)
- De bästa JSON-intervjufrågorna och -svaren
- Använda JSON för gränssnitttestning
- JSON-handledning: Introduktion och en komplett guide för nybörjare
- Kodatastruktur i C ++ med illustration
- MongoDB Skapa säkerhetskopia av databas
- Stack datastruktur i C ++ med illustration
- Cirkulär länkad datastruktur i C ++ med illustration