how create json structure using c
JSON-structuur maken (deel 2):
In onze vorige tutorial hebben we besproken een eenvoudig JSON-bestand maken met behulp van voorbeeldgegevenssets
We kwamen ook de details te weten over het gebruik van een json.Net-framework voor het serialiseren van gegevens naar JSON-indeling. We hebben C # en Visual Studio gebruikt om een eenvoudige consoletoepassing te maken om door ons verstrekte gegevens en sleutelwaarden te gebruiken en vervolgens die sleutelwaarden in een JSON-structuur te serialiseren. Laten we nu eens kijken wat deze tutorial zal behandelen terwijl we verder gaan.
In deze zelfstudie bespreken we de manieren om een complexere JSON-structuur te creëren. We zullen arrays maken met meerdere sets gegevens en ook kijken naar manieren om geneste structuren in JSON te maken.
De meeste JSON-bestanden die worden gebruikt voor gegevensoverdracht tussen verschillende systemen bevatten complexere gegevensstructuren. Daardoor zal het leren over de complexe JSON-structuur u helpen bij het maken van testgegevens op basis van de JSON-schemavereisten.
Wat je leert:
- De code schrijven
- Array met meerdere gegevens toevoegen aan JSON
- Bewerkingen uitvoeren op gegevens voordat deze aan JSON-sleutels worden toegewezen
- Een geneste JSON-structuur maken
- Een Excel-blad gebruiken als gegevensbron voor JSON
- Gevolgtrekking
- Aanbevolen literatuur
De code schrijven
In deze tutorial zullen we verwijzen naar ons vorige bericht. Daarom zou ik iedereen aanraden om eerst de eerdere tutorial door te nemen, alvorens verder te gaan met deze.
We zullen dezelfde JSON-gegevens gebruiken die we in onze vorige tutorial hebben gebruikt. We zullen ook dezelfde set code opvolgen die we hebben geschreven voor ons vorige JSON-voorbeeld.
Laten we nu starten.!!
Array met meerdere gegevens toevoegen aan JSON
Om een array aan de JSON toe te voegen, voegen we een array-sleutel toe aan onze vorige dataset.
Onze dataset wordt zoals hieronder weergegeven:
Het toevoegen van een array-object aan de JSON is vergelijkbaar met het toevoegen van andere sleutelwaarden. Waarden kunnen direct worden toegewezen op het moment van declaratie van de array zelf. Zodra de waarden zijn toegewezen aan een array, zal de JSON newtonsoft de objecten serialiseren in sleutelwaardeparen.
Om de array in de JSON toe te voegen, zullen we deze declareren in het 'Werknemer' klasse zelf. (Raadpleeg onze vorige tutorial voor details)
Zoals u kunt zien, hebben we de Array direct in de klasse Employee gedeclareerd. Breng geen wijzigingen aan in de hoofdmethode. Door een andere klasse voor het JSON-object te maken, kunnen we objecten georganiseerd houden.
Telkens wanneer er wijzigingen zijn in de JSON-structuur of wanneer u nog een set gegevens wilt toevoegen, hoeft u alleen de wijzigingen alleen in dat specifieke klassenbestand aan te brengen in plaats van overal in het project wijzigingen aan te brengen. Dit betekent dat uw Main-methode meestal hetzelfde blijft en dat de wijzigingen alleen binnen de klassen plaatsvinden.
Laten we het programma uitvoeren en ons JSON-bestand maken met de array.
Kopieer nu de inhoud en plak hier om te valideren of de gemaakte JSON geldig is of niet.
Klik op de Valideer JSON knop om het te valideren. De JSON-sleutel / waarde-paren worden gerangschikt en validatie wordt uitgevoerd op de opgegeven gegevensset.
Bewerkingen uitvoeren op gegevens voordat deze aan JSON-sleutels worden toegewezen
Laten we aannemen dat we enkele gegevens hebben en we willen een bewerking op die gegevens uitvoeren voordat we deze als waarden aan de JSON-sleutels toewijzen.
Hoe gaan we dat in zo'n geval doen?
Bijvoorbeeld: Laten we zeggen dat de werknemer-ID die we hebben doorgegeven aan de JSON uit twee delen bestaat: de eerste drie letters geven de locatiecode aan en de laatste vier cijfers geven het werknemersnummer aan. Als u beide samenvoegt, krijgen we de werknemer-ID van een werknemer.
Als we de locatiecode en het werknemersnummer afzonderlijk ontvangen, moeten we ze samenvoegen om een werknemers-ID te vormen. Alleen dan kunnen we het via de JSON doorgeven.
Om dit soort scenario's te omzeilen, moeten we bewerkingen uitvoeren op de gegevens voordat we deze aan een sleutel toewijzen.
Laten we eens kijken hoe dit kan worden gedaan.
Laten we teruggaan naar onze werknemersklasse en een andere klas maken, waarin we alle bewerkingen zullen uitvoeren.
Hier zullen we een andere klasse maken om de bewerkingen op de werknemersgegevens te bevatten en uit te voeren.
Laten we een nieuwe klasse 'EmployeeData' maken.
De klasse is gemaakt, en laten we nu een methode maken met specificatie voor openbare toegang en het retourneringstype als onze klasse 'Werknemer'. We hebben de naam van de methode opgegeven als 'EmployeeDataOps' U kunt echter uw eigen naam opgeven. Om dit eenvoudiger te maken, geef ik binnen deze methode geen parameter door.
Omdat we het retourtype als een klasse hebben beschreven, zullen we een instantie van de klasse Employee moeten retourneren. Om dat te doen, zullen we een klasseobject binnen de methode maken.
Hier hebben we een object gemaakt voor de klasse Employee met de naam EmpObj en aan het einde van de methode hebben we het object geretourneerd.
Laten we twee gehele getallen definiëren binnen de klasse EmployeeData die de volledige locatiecode en het werknemersnummer vertegenwoordigen. Eenmaal gedeclareerd, zullen we het gebruiken om bewerkingen uit te voeren en vervolgens waarden aan de respectieve sleutels toewijzen.
Nu we de locatiecode en het medewerkersnummer hebben, kunnen we er bewerkingen op uitvoeren om de medewerker-ID te vinden. Om dit te doen, zullen we een eenvoudige code schrijven om beide gehele getallen samen te voegen.
Hiermee worden eenvoudig beide gehele getallen samengevoegd die de werknemer-ID vormen. We hebben de medewerker-ID onder de variabele opgeslagen 'EmpID' , en nu zullen we deze variabele doorgeven aan 'employeeID' in EmpObj.
De hele voorbeeldcode ziet er uit zoals hieronder weergegeven:
beste mobiele telefoonspion voor Android
Is het je opgevallen dat we de waarde hebben verwijderd die we eerder aan de variabele employeeID in de klasse Employee hebben toegewezen? We hebben dit gedaan omdat we de waarde van retourneren EmployeeDataOps () methode. Daarom worden de gegevens aan de variabelen vanuit deze methode zelf ingevoerd. Hierdoor is het niet meer nodig om waarden rechtstreeks op te geven.
hoe binaire bestanden in Windows te openen
Omdat we nu klaar zijn met de methode, zullen we een instantie van deze methode aan de hoofdmethode moeten toevoegen, zodat deze methode kan worden aangeroepen.
Om dit te doen, zullen we een ander klasseobject maken in de hoofdmethode voor 'EmployeeData' klasse.
Nadat we een klasseobject hebben gemaakt, zullen we de methode binnen deze klasse nu toewijzen aan het Emp-object dat we eerder hebben gemaakt voor de werknemersklasse.
Ten slotte ziet de code in de hoofdmethode er als volgt uit:
Laten we wat testgegevens op een rijtje zetten:
Locatiecode = 123
Werknemersnummer = 9874
We zullen deze gegevens in de code plaatsen en met de laatste wijzigingen in de hoofdmethode. We hebben nu onze code voltooid. Laten we nu de code uitvoeren en onze JSON valideren.
Dit is de JSON die is gemaakt:
Zoals u kunt zien, is de nieuwe aaneengeschakelde waarde voor de werknemer-ID ingevoerd in de JSON-waarde.
Laten we deze JSON kopiëren en plakken hier om zijn structuur te valideren. Zet de tekst in de JSON-lint-site.
Gebruik de validatieknop om de structuur te valideren, zoals hieronder weergegeven:
Een geneste JSON-structuur maken
Het voorbeeld dat we tot nu toe hebben besproken, gebruikt voornamelijk tekenreeksen en numerieke waarden binnen een array of object. Maar JSON kan ook worden gebruikt om een volledig JSON-object uit te drukken door hetzelfde begrip te gebruiken als een array-element. De objectleden in de lijst kunnen hun eigen objecten en arraysleutels gebruiken.
In Inleiding tot JSON, een van onze eerdere tutorials, hebben we voor het eerst gekeken naar hoe een geneste JSON eruitziet. In die tutorial gaan we ervan uit dat de werknemer ook een auto heeft en dat de JSON ook alle details over de werknemersauto moet bevatten.
Dus de JSON-structuur die we aan het einde krijgen, zal er ongeveer zo uitzien:
Hier hebben we de werknemer JSON met alle gegevens, dan hebben we ook een auto JSON-object genest in de werknemer JSON. Auto-object heeft zijn eigen set sleutels en waarden.
Laten we proberen deze JSON programmatisch te maken.
Hiervoor beginnen we met dezelfde JSON die we in onze vorige tutorial hebben gemaakt. Om het gemakkelijker te maken, zullen we het nieuwe JSON-object (d.w.z. Car JSON) in een nieuwe klasse maken. We zullen een nieuwe klassewagen toevoegen en alle objecten in deze klasse toevoegen met een specificatie voor openbare toegang.
Nu kunnen we de waarde hier rechtstreeks toevoegen of we kunnen een nieuwe klasse schrijven en een aangepaste methode maken met een klasseobjectretourtype om de waarden toe te wijzen die vergelijkbaar zijn met wat we in de vorige zelfstudie hebben gedaan. Gemakshalve zullen we de waarde rechtstreeks aan de belangrijkste variabelen toewijzen.
Nu hebben we een nieuwe klasse gemaakt met de objecten en waarden. In de volgende stap zullen we dit toevoegen aan de Employee JSON-structuur, zodat wanneer de JSON-serialisatie plaatsvindt, de sleutelwaarden van de Car-klasse ook moeten worden geserialiseerd samen met de employee-klasse als genest JSON.
Om dat te doen, moeten we eerst een klassetype-objectauto toevoegen aan de klasse Werknemer. Dit object wordt gebruikt om de waarden op te slaan die aanwezig zijn in de klasse Car.
Zoals hierboven weergegeven, hebben we de nieuwe variabele met het gegevenstype de autoklasse toegewezen. Laten we nu naar de methode EmployeeDataOps () gaan die we hebben gemaakt in de klasse EmployeeData. We zullen de code schrijven om de variabelen en waarden uit de klasse Car aan te roepen.
Laten we eerst een klasseobject maken voor autoklasse:
Dit object bevat alle gegevens van de autoklasse. Zodra we alle gegevens van de autoklasse in dit object hebben gedeclareerd, zal de volgende stap zijn om deze gegevens (gegevens die zich in het auto-object bevinden) toe te wijzen aan de autovariabele die we hebben gemaakt om deze gegevens op te slaan.
Om dit te doen, gebruiken we gewoon het Employee-object dat we hebben gemaakt om toegang te krijgen tot de auto-variabele. En dan kunnen we het auto-object met de gegevens direct toewijzen aan de variabele auto.
Dat is het. We hebben een variabele in de ene klasse gemaakt en vervolgens een ander object gemaakt om toegang te krijgen tot de waarde van een andere klasse, en vervolgens hebben we de waarde aan de eerste variabele toegewezen.
Laten we nu ons programma uitvoeren en kijken of het de gewenste JSON kan maken.
Zoals hierboven getoond, zien we dat er een auto json-sleutel is gemaakt en deze bevat alle gegevens die we in de autoklasse hebben ingevoerd als de sleutel en waarden. Nu zullen we opnieuw de JSON-inhoud kopiëren en navigeren hier om de JSON te valideren.
Kopieer gewoon alle JSON-inhoud naar het tekstgebied en klik op het 'Valideer JSON ”Knop.
Dus de JSONlint-site heeft onze gegevens gerangschikt en perfect gevalideerd. We kunnen zien dat het 'auto' -object is gerangschikt in de JSON-structuur zoals we nodig hadden. Met hetzelfde proces kunt u meerdere niveaus van geneste JSON maken. Blijf gewoon het JSON-object aan de klasse toevoegen en wijs de waarde ervan toe aan een klassevariabele.
Zoals u kunt zien, hoeven we in onze hoofdmethode niet eens een code te wijzigen.
Een Excel-blad gebruiken als gegevensbron voor JSON
In onze vorige tutorials hebben we verschillende manieren besproken om verschillende structuren van JSON te maken. Maar er was een groot probleem met al onze structuren, we waren altijd hard bezig met het coderen van de waarden voor de sleutels.
In deze tutorial zullen we de manieren bespreken waarop we een Excel-sheet kunnen gebruiken om de gegevens naar de JSON-sleutels te sturen. Ik raad je aan om alle tutorials te doorlopen die we eerder hebben besproken voordat je verder gaat met deze, aangezien we dezelfde code zullen bespreken die we in de vorige tutorials hebben geschreven.
Door stap voor stap te gaan, kunt u het hele concept op een betere manier begrijpen.
Ik hoop dat jullie de basiscode hebben begrepen om een JSON te maken, in dit deel zullen we dezelfde codestructuur voortzetten.
Laten we eerst een Excel-bestand maken met JSON-gegevens.
We hebben een employeeData.xlsx-bestand gemaakt met de volgende details.
Voordat we beginnen met het schrijven van de code voor het extraheren van waarden uit de Excel, moeten we een assembly-verwijzing aan ons project toevoegen. Om toegang te krijgen tot het kantoorobject, biedt C # ons de Microsoft Office Interop. Deze zijn erg handig om gemakkelijke toegang tot de kantoorobjecten te bieden.
beste programma om xml-bestanden te openen
Omdat we Excel in dit project gebruiken, zullen we Microsoft Office Interop Excel-montage-referentie gebruiken.
Om het te installeren, klik met de rechtermuisknop op de referenties in uw oplossingsverkenner en selecteer vervolgens Beheer NuGet-pakketten Schrijf Microsoft Office Interop Excel in de zoekbalk en het zoekresultaat geeft het vereiste pakket weer.
Zodra u Microsoft Office Interop Excel heeft, klikt u op het Installeer knop om het te installeren.
Zodra de installatie is voltooid, kunt u zien dat de Microsoft Office Interop Excel is toegevoegd aan de lijst met assembly-referenties in het project.
Laten we om te beginnen eerst de verschillende Excel-elementen toewijzen.
Hier hebben we waarden toegewezen aan de Excel-applicatie, Excel-werkmap en Excel-werkblad. Zodra deze zijn gedefinieerd, zullen we deze gebruiken in onze volgende stappen om toegang te krijgen tot de waarden in het Excel-blad.
Wat zijn de stappen die we doorgaans volgen als we een waarde uit een Excel-sheet willen halen?
Eerst openen we de Excel-applicatie, daarna openen we de Excel-werkmap en het Excel-werkblad en later lokaliseren we het element op basis van de rij- en kolomwaarden. We gaan hier iets soortgelijks doen.
Deze code geeft toegang tot de Excel-applicatie.
Deze code opent de werkmap met de opgegeven naam op de opgegeven locatie.
Nu zullen we een code schrijven om toegang te krijgen tot het specifieke werkblad in de werkmap. We hebben een werkblad met de naam 'Blad1' (de standaardnaam in het Excel-blad)
Nu we toegang hebben tot het werkblad, is de volgende stap het vinden van de juiste kolom en de juiste gegevens. Eerst zoeken we naar een kolom met de 'Sleutel'.
Bijvoorbeeld Laten we eerst zoeken naar de kolom met de waarde 'FirstName'. Zodra we de waarde hebben gevonden, extraheren we het kolomnummer. Zoals we weten, bevat de eerste rij de kop en de tweede rij onze gegevens, dus we zullen het kolomnummer en het rijnummer gebruiken om de exacte gegevens te extraheren.
Hierdoor wordt het kolomnummer voor de voornaam in de variabele opgeslagen.
Nu zullen we het kolomnummer van de voornaam gebruiken om de waarde uit de cel eronder te extraheren. Zoals bekend zal de waardemethode alleen het stringtype retourneren, dus we zullen dit opslaan in een stringvariabele.
Nu hebben we de waarde van de voornaam opgeslagen in de variabele. We zullen dus het werknemerobject gebruiken dat we in onze methode hebben gedefinieerd om de waarde toe te wijzen.
Verwijder alle waarden die u hebt toegewezen / hardcoded in de klasse Employee, aangezien we de waarden zullen retourneren met behulp van onze methode.
Maar er is één probleem hiermee, de '.Tekst' functie retourneert altijd een tekenreekswaarde. Dus als we de waarde van een werknemers-ID willen extraheren die een geheel getal is, wordt deze ook als een tekenreeks geëxtraheerd. We zullen deze string dus moeten converteren naar een geheel getal voordat we deze aan het JSON-object toewijzen. Om dat te doen, zullen we de waarde direct ontleden tot een geheel getal.
Dus de code voor employeeID ziet er als volgt uit:
Aan het einde zullen we de tekenreekswaarde ontleden tot een geheel getal, aangezien onze JSON employeeID herkent als een geheel getal.
De algemene code voor het ophalen van gegevens voor alle 4 kolommen ziet er dus uit als hieronder:
Nu hoeven we alleen nog maar de variabelen die we hebben gemaakt met de gegevens van het Excel-blad toe te wijzen aan de medewerkerobjecten.
Alles is klaar, we gaan nu het project bouwen. Zodra de build is voltooid, zullen we het programma uitvoeren om de JSON te genereren.
De volgende JSON wordt gegenereerd:
Laten we nu de gegevens van de JSON vergelijken met die in het Excel-blad.
Zoals hierboven getoond, komen de JSON-gegevens overeen met de gegevens in alle 4 de kolommen van het Excel-blad. Laten we de JSON valideren die ons programma heeft gegenereerd. Om dat te doen zullen we opnieuw bezoeken hier Kopieer gewoon alle JSON-inhoud naar het tekstgebied en klik op het 'JSON valideren' knop.
Hoera! We hebben een geldige JSON gemaakt met behulp van de gegevens uit Excel.
Oefening voor jou:
Maak een geneste JSON met drie niveaus. Maak een bovenliggend JSON-bedrijf en nest de JSON van de werknemer die we eerder hebben gemaakt, samen met de auto-JSON.
Gevolgtrekking
We zijn nu aan het einde van onze tutorial gekomen. Het is een lange tutorial geweest, maar we hebben verschillende dingen geleerd. We hebben geleerd hoe we een eenvoudige JSON kunnen maken met behulp van c # -programmering en de voordelen van het categoriseren van verschillende sets JSON-gegevens in een andere klasse. We hebben ook onze programmeervaardigheden gebruikt om arrays en zelfs een andere JSON-structuur toe te voegen binnen een bovenliggende JSON.
Ten slotte hebben we gewerkt aan manieren om gegevens uit een andere gegevensbron op te halen om de waarden naar de JSON-sleutels te sturen.
Ik hoop dat jullie tot nu toe allemaal genoten hebben van de hele reeks JSON-tutorials.
Tutorial # 4: JSON gebruiken voor interfacetests
Aanbevolen literatuur
- JSON-objecten maken met C # -code (JSON Creation Part 1)
- Top JSON Interview vragen en antwoorden
- JSON gebruiken voor interfacetests
- JSON-zelfstudie: inleiding en een complete gids voor beginners
- Wachtrijgegevensstructuur in C ++ met illustratie
- MongoDB Maak een databaseback-up
- Stapel gegevensstructuur in C ++ met illustratie
- Circulaire gekoppelde lijstgegevensstructuur in C ++ met illustratie