how create json structure using c
Tworzenie struktury JSON (część 2):
W naszym poprzednim samouczku omówiliśmy tworzenie prostego pliku JSON przy użyciu przykładowych zestawów danych .
Dowiedzieliśmy się również o szczegółach wykorzystania frameworka json.Net do serializacji danych do formatu JSON. Wykorzystaliśmy C # i Visual Studio, aby stworzyć prostą aplikację konsolową do korzystania z dostarczonych przez nas danych i wartości kluczy, a następnie serializowaliśmy te wartości kluczy do struktury JSON. Zobaczmy teraz, co omówimy w tym samouczku w miarę postępów.
W tym samouczku omówimy sposoby tworzenia bardziej złożonej struktury JSON. Stworzymy tablice z wieloma zestawami danych, a także przyjrzymy się sposobom tworzenia zagnieżdżonych struktur w formacie JSON.
Większość plików JSON używanych do transmisji danych między różnymi systemami zawiera bardziej złożone struktury danych. Tym samym poznanie złożonej struktury JSON pomoże w tworzeniu danych testowych w oparciu o wymagania schematu JSON.
Czego się nauczysz:
- Pisanie kodu
- Dodawanie tablicy z wieloma danymi do formatu JSON
- Wykonywanie operacji na danych przed przypisaniem ich do kluczy JSON
- Tworzenie zagnieżdżonej struktury JSON
- Korzystanie z arkusza programu Excel jako źródła danych dla formatu JSON
- Wniosek
- rekomendowane lektury
Pisanie kodu
W tym samouczku będziemy odwoływać się do naszego poprzedniego postu. Dlatego sugerowałbym wszystkim, aby najpierw przejrzeli wcześniejszy samouczek, zanim przejdą do tego.
Będziemy używać tych samych danych JSON, których używaliśmy w naszym poprzednim samouczku. Będziemy również śledzić ten sam zestaw kodu, który napisaliśmy dla naszego poprzedniego przykładu JSON.
Zacznijmy teraz.!!
Dodawanie tablicy z wieloma danymi do formatu JSON
Aby dodać tablicę do JSON, dodajmy klucz tablicy do naszego poprzedniego zestawu danych.
Nasz zestaw danych stanie się taki, jak pokazano poniżej:
Dodawanie obiektu tablicy do formatu JSON jest podobne do dodawania innych wartości kluczy. Wartości można przypisać bezpośrednio w momencie deklaracji samej tablicy. Po przypisaniu wartości do tablicy, JSON newtonsoft zserializuje obiekty w pary klucz-wartość.
Aby dodać tablicę w formacie JSON, zadeklarujemy ją w pliku 'Pracownik' sama klasa. (Aby uzyskać szczegółowe informacje, zapoznaj się z naszym poprzednim samouczkiem)
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' }; } }
Jak widać, bezpośrednio zadeklarowaliśmy tablicę w klasie Employee. Nie wprowadzaj żadnych zmian w głównej metodzie. Stworzenie innej klasy dla obiektu JSON pomoże nam w utrzymaniu porządku w obiektach.
Ilekroć pojawiają się zmiany w strukturze JSON lub gdy chcesz dodać kolejny zestaw danych, wszystko, co musisz zrobić, to wprowadzić zmiany tylko w tym konkretnym pliku klasy, a nie wprowadzać zmian w całym projekcie. Oznacza to, że Twoja metoda Main pozostanie taka sama przez większość czasu, a zmiany będą miały miejsce tylko w klasach.
Uruchommy program i utwórzmy nasz plik JSON z tablicą.
Teraz skopiuj zawartość i wklej tutaj aby sprawdzić, czy utworzony JSON jest prawidłowy, czy nie.
Kliknij na Sprawdź poprawność JSON przycisk, aby go zatwierdzić. Pary klucz-wartość JSON zostaną ułożone, a walidacja zostanie przeprowadzona na podanym zestawie danych.
Wykonywanie operacji na danych przed przypisaniem ich do kluczy JSON
Załóżmy, że mamy jakieś dane i chcemy wykonać na nich jakąś operację przed przypisaniem ich jako wartości do kluczy JSON.
W takim przypadku, jak to zrobimy?
Na przykład: Załóżmy, że identyfikator pracownika, który przekazaliśmy do JSON, składa się z dwóch części, pierwsze trzy litery oznaczają kod lokalizacji, a ostatnie 4 cyfry oznaczają numer pracownika. Połączenie obu da nam identyfikator pracownika pracownika.
W przypadku, gdy osobno otrzymamy kod lokalizacji i numer pracownika, będziemy musieli je połączyć w celu utworzenia identyfikatora pracownika. Dopiero wtedy możemy przekazać to przez JSON.
Aby przezwyciężyć tego typu scenariusze, musimy wykonać operacje na danych, zanim przypiszemy je do klucza.
Zobaczmy, jak można to zrobić.
Wróćmy do naszej klasy pracowniczej i stwórzmy kolejną klasę, w której będziemy wykonywać wszystkie operacje.
Tutaj utworzymy kolejną klasę, która będzie zawierała i wykonywała operacje na danych pracowników.
Utwórzmy nową klasę „EmployeeData”.
Klasa została utworzona, a teraz utwórzmy metodę ze specyfikatorem dostępu publicznego i typem zwracanym jako nasza klasa „Pracownik”. Podaliśmy nazwę metody jako „EmployeeDataOps” . Możesz jednak podać własne imię i nazwisko. Aby to uprościć, nie przekazuję żadnego parametru w ramach tej metody.
Ponieważ opisaliśmy zwracany typ jako klasę, będziemy musieli zwrócić instancję klasy Employee. Aby to zrobić, utworzymy obiekt klasy wewnątrz metody.
Tutaj stworzyliśmy obiekt dla klasy Employee o nazwie EmpObj a na końcu metody zwróciliśmy obiekt.
Zdefiniujmy dwie liczby całkowite w klasie EmployeeData reprezentujące kod pełnej lokalizacji i numer pracownika. Po zadeklarowaniu użyjemy go do wykonania operacji, a następnie przypiszemy wartości do odpowiednich klawiszy.
int locationCode = 569; int employeeNumber = 8523;
Teraz, gdy mamy kod lokalizacji i numer pracownika, możemy wykonać na nich operacje, aby znaleźć identyfikator pracownika. Aby to zrobić, napiszemy prosty kod, który połączy obie liczby całkowite.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
Spowoduje to po prostu połączenie obu liczb całkowitych tworzących identyfikator pracownika. Przechowaliśmy identyfikator pracownika pod zmienną „EmpID” , a teraz przekażemy tę zmienną do „ID pracownika” w EmpObj.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
Cały przykładowy kod będzie wyglądał jak poniżej:
testowanie automatyzacji pytania i odpowiedzi na rozmowę kwalifikacyjną dla doświadczonych
Czy zauważyłeś, że usunęliśmy wartość, którą wcześniej przypisaliśmy do zmiennej EmployeeID w klasie Employee? Zrobiliśmy to, ponieważ zwracamy wartość z EmployeeDataOps () metoda. W związku z tym dane do zmiennych będą pobierane z samej tej metody. Eliminuje to konieczność bezpośredniego deklarowania wartości.
wyzwalanie portów a przekierowanie portów do gier
Ponieważ skończyliśmy już z metodą, będziemy musieli dodać wystąpienie tej metody do metody głównej, aby można było ją wywołać.
W tym celu utworzymy kolejny obiekt klasy w głównej metodzie for „EmployeeData” klasa.
EmployeeData empData = new EmployeeData();
Po utworzeniu obiektu klasy przypiszemy metodę wewnątrz tej klasy do obiektu Emp, który utworzyliśmy wcześniej dla klasy pracownika.
emp = empData.EmployeeDataOps();
Wreszcie kod wewnątrz metody main będzie wyglądał następująco:
Umieśćmy trochę danych testowych:
Kod lokalizacji = 123
Numer pracownika = 9874
Umieścimy te dane w kodzie i wraz z końcowymi zmianami w głównej metodzie. Zakończyliśmy już nasz kod. Teraz uruchommy kod i zweryfikujmy nasz JSON.
Oto utworzony JSON:
Jak widać, nowa połączona wartość identyfikatora pracownika została wprowadzona do wartości JSON.
Skopiujmy i wklejmy ten JSON tutaj aby zweryfikować jego strukturę. Umieść tekst w witrynie lint JSON.
Użyj przycisku walidacji, aby zweryfikować strukturę, jak pokazano poniżej:
Tworzenie zagnieżdżonej struktury JSON
Przykład, który omawialiśmy do tej pory, wykorzystuje głównie wartości łańcuchowe i liczbowe wewnątrz tablicy lub obiektu. Ale JSON może być również używany do wyrażania całego obiektu JSON przy użyciu tego samego pojęcia, co element tablicy. Członkowie obiektów na liście mogą używać własnych obiektów i kluczy tablicowych.
We wprowadzeniu do formatu JSON, które jest jednym z naszych wcześniejszych samouczków, po raz pierwszy przyjrzeliśmy się, jak wygląda zagnieżdżony kod JSON. W tym samouczku zakładamy, że pracownik ma również samochód, a JSON powinien również zawierać wszystkie szczegóły dotyczące samochodu pracownika.
Czyli struktura JSON, którą otrzymamy na końcu, będzie podobna do tej:
Tutaj mamy pracownika JSON ze wszystkimi danymi, mamy też obiekt Car JSON zagnieżdżony wewnątrz pracownika JSON. Obiekt Car ma własny zestaw kluczy i wartości.
Spróbujmy programowo utworzyć ten kod JSON.
W tym celu zaczniemy od tego samego kodu JSON, który utworzyliśmy w naszym poprzednim samouczku. Dla ułatwienia utworzymy nowy obiekt JSON (czyli Car JSON) w nowej klasie. Dodamy nowy samochód klasy i wszystkie obiekty wewnątrz tej klasy ze specyfikatorem dostępu publicznego.
Teraz możemy albo dodać wartość bezpośrednio tutaj, albo możemy napisać nową klasę i utworzyć niestandardową metodę z typem zwracanym przez obiekt klasy, aby przypisać wartości podobne do tego, co zrobiliśmy w poprzednim samouczku. Dla wygody wartość przypiszemy bezpośrednio do kluczowych zmiennych.
Teraz stworzyliśmy nową klasę z obiektami i wartościami. W następnym kroku dodamy to do struktury Employee JSON, aby w przypadku serializacji JSON, klucz-wartości z klasy Car również powinny zostać serializowane wraz z klasą pracownika jako zagnieżdżone JSON.
Aby to zrobić, najpierw będziemy musieli dodać samochód obiektowy typu klasy w klasie Employee. Ten obiekt będzie używany do przechowywania wartości obecnych w klasie Car.
Jak pokazano powyżej, nowej zmiennej przypisaliśmy typ danych jako Klasa samochodu. Przejdźmy teraz do metody EmployeeDataOps (), którą utworzyliśmy w klasie EmployeeData. Napiszemy kod wywołujący zmienne i wartości z klasy Car.
Najpierw utwórzmy obiekt klasy dla klasy samochodu:
Car carObj = new Car();
Ten obiekt będzie zawierał wszystkie dane z klasy samochodu. Po zadeklarowaniu wszystkich danych z klasy samochodu do tego obiektu, następnym krokiem będzie przypisanie tych danych (danych zawartych w obiekcie samochodu) do zmiennej samochodu, którą utworzyliśmy w celu przechowywania tych danych.
Aby to zrobić, po prostu użyjemy utworzonego przez nas obiektu pracownika, aby uzyskać dostęp do zmiennej samochodu. Następnie możemy bezpośrednio przypisać obiekt samochód z danymi do zmiennej samochód.
EmpObj.car = carObj;
Otóż to. Utworzyliśmy zmienną w jednej klasie, a następnie utworzyliśmy inny obiekt, aby uzyskać dostęp do wartości z innej klasy, a następnie przypisaliśmy wartość do pierwszej zmiennej.
Teraz uruchommy nasz program i zobaczmy, czy może utworzyć żądany kod JSON.
Jak pokazano powyżej, widzimy, że został utworzony klucz json samochodu i zawiera on wszystkie dane, które wprowadziliśmy w klasie Car jako klucz i wartości. Teraz ponownie skopiujemy zawartość JSON i będziemy nawigować tutaj do walidacji JSON.
Po prostu skopiuj całą zawartość JSON do obszaru tekstowego i kliknij „Sprawdź poprawność JSON ”.
Tak więc witryna JSONlint uporządkowała nasze dane i doskonale je zweryfikowała. Widzimy, że obiekt „samochód” został ułożony w strukturze JSON zgodnie z naszymi wymaganiami. Korzystając z tego samego procesu, możesz utworzyć wiele poziomów zagnieżdżonego formatu JSON. Po prostu kontynuuj dodawanie obiektu JSON do klasy i przypisuj jego wartość do zmiennej klasy.
Jak widać, nie musimy nawet zmieniać żadnego kodu w naszej głównej metodzie.
Korzystanie z arkusza programu Excel jako źródła danych dla formatu JSON
W naszych poprzednich samouczkach omówiliśmy kilka sposobów tworzenia różnych struktur JSON. Ale był duży problem ze wszystkimi naszymi strukturami, zawsze twardo kodowaliśmy wartości kluczy.
W tym samouczku omówimy sposoby, za pomocą których możemy użyć arkusza programu Excel do dostarczania danych do kluczy JSON. Zalecałbym przejrzenie wszystkich samouczków, które omówiliśmy wcześniej, przed kontynuowaniem tego, ponieważ będziemy omawiać ten sam kod, który napisaliśmy w poprzednich samouczkach.
Przechodzenie krok po kroku pomoże ci lepiej zrozumieć całą koncepcję.
Mam nadzieję, że zrozumieliście podstawowy kod do tworzenia JSON, w tej części zajmiemy się tą samą strukturą kodu.
Najpierw utwórzmy plik Excela z danymi JSON.
Utworzyliśmy plik EmployerData.xlsx z następującymi szczegółami.
Zanim zaczniemy pisać kod do wyodrębniania wartości z programu Excel, będziemy musieli dodać odwołanie do zestawu do naszego projektu. Aby uzyskać dostęp do obiektu biurowego, C # oferuje nam Microsoft Office Interop. Są one bardzo pomocne w zapewnieniu łatwego dostępu do obiektów biurowych.
ado.net pytania do wywiadu i odpowiedzi dla doświadczonych
Ponieważ używamy programu Excel w tym projekcie, użyjemy odwołania do zestawu Microsoft Office Interop Excel.
Aby go zainstalować, kliknij prawym przyciskiem myszy referencje w eksploratorze rozwiązań, a następnie wybierz Zarządzaj pakietami NuGet . Wpisz Microsoft Office Interop Excel w pasku wyszukiwania, a wynik wyszukiwania wyświetli wymagany pakiet.
Po uzyskaniu Microsoft Office Interop Excel kliknij plik Przycisk Instaluj aby go zainstalować.
Po zakończeniu instalacji można zobaczyć, że Microsoft Office Interop Excel został dodany do listy odniesień do zestawów w projekcie.
Na początek przypiszmy najpierw różne elementy programu Excel.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
Tutaj przypisaliśmy wartości do aplikacji Excel, skoroszytu programu Excel i arkusza roboczego programu Excel. Po ich zdefiniowaniu użyjemy ich w kolejnych krokach, aby uzyskać dostęp do wartości w arkuszu programu Excel.
Jakie kroki zwykle wykonujemy, jeśli chcemy pobrać wartość z arkusza Excela?
Najpierw uzyskujemy dostęp do aplikacji Excel, następnie otwieramy skoroszyt programu Excel i arkusz programu Excel, a następnie lokalizujemy element na podstawie jego wartości w wierszach i kolumnach. Zrobimy tutaj coś podobnego.
Ten kod umożliwi dostęp do aplikacji Excel.
xlApp = new Microsoft.Office.Interop.Excel.Application();
Ten kod otworzy skoroszyt z podaną nazwą obecną w danej lokalizacji.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
Teraz napiszemy kod, aby uzyskać dostęp do określonego arkusza roboczego w skoroszycie. Mamy arkusz roboczy o nazwie „Arkusz1” (domyślna nazwa w arkuszu Excela)
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
Ponieważ uzyskaliśmy dostęp do arkusza roboczego, następnym krokiem będzie znalezienie właściwej kolumny i poprawnych danych. Najpierw wyszukamy kolumnę z „Kluczem”.
Na przykład, Najpierw poszukajmy kolumny z wartością „FirstName”. Po znalezieniu wartości wyodrębnimy numer kolumny. Wtedy, jak wiemy, pierwszy wiersz zawiera nagłówek, a drugi wiersz zawiera nasze dane, więc użyjemy numeru kolumny i numeru wiersza, aby wyodrębnić dokładne dane.
Spowoduje to zapisanie numeru kolumny dla FirstName w zmiennej.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
Teraz użyjemy numeru kolumny FirstName, aby wyodrębnić wartość z komórki poniżej. Jak wiadomo, metoda value zwróci tylko typ string, więc zapiszemy to w zmiennej łańcuchowej.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
Teraz mamy wartość imienia przechowywaną w zmiennej. Więc użyjemy obiektu pracownika, który zdefiniowaliśmy w naszej metodzie, aby przypisać wartość.
Usuń wszystkie wartości, które przypisałeś / zakodowałeś w klasie Employee, ponieważ będziemy zwracać wartości za pomocą naszej metody.
Ale jest z tym jeden problem, plik '.Tekst' funkcja zawsze zwraca wartość ciągu. Tak więc, jeśli chcemy wyodrębnić wartość identyfikatora pracownika, która jest liczbą całkowitą, zostanie również wyodrębniona jako ciąg. Dlatego będziemy musieli przekonwertować ten ciąg na liczbę całkowitą przed przypisaniem go do obiektu JSON. Aby to zrobić, bezpośrednio przeanalizujemy wartość na liczbę całkowitą.
Tak więc kod identyfikatora pracownika będzie wyglądał tak, jak pokazano poniżej:
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
Na koniec przeanalizujemy wartość ciągu na liczbę całkowitą, ponieważ nasz kod JSON rozpoznaje identyfikator pracownika jako wartość całkowitą.
Tak więc, ogólny kod do pobierania danych dla wszystkich 4 kolumn będzie wyglądał tak, jak pokazano poniżej:
Teraz wszystko, co musimy zrobić, to przypisać zmienne, które utworzyliśmy z danymi z arkusza Excela, do obiektów pracowników.
Wszystko gotowe, teraz zbudujemy projekt. Po zakończeniu kompilacji uruchomimy program, który wygeneruje JSON.
Zostanie wygenerowany następujący kod JSON:
Teraz porównajmy dane z formatu JSON z danymi w arkuszu programu Excel.
Jak pokazano powyżej, dane JSON są zgodne z danymi we wszystkich 4 kolumnach arkusza programu Excel. Sprawdźmy poprawność kodu JSON wygenerowanego przez nasz program. Aby to zrobić, ponownie odwiedzimy tutaj . Po prostu skopiuj całą zawartość JSON do obszaru tekstowego i kliknij „Validate JSON” przycisk.
Hurra! Stworzyliśmy prawidłowy JSON, korzystając z danych z programu Excel.
Ćwiczenia dla Ciebie:
Utwórz trzypoziomowy zagnieżdżony JSON. Utwórz nadrzędną firmę JSON Company i zagnieżdż plik JSON pracownika, który utworzyliśmy wcześniej, wraz z JSON samochodu.
Wniosek
Doszliśmy do końca naszego samouczka. To był długi tutorial, ale nauczyliśmy się kilku rzeczy. Dowiedzieliśmy się, jak utworzyć prosty JSON przy użyciu programowania C # i korzyści płynące z kategoryzowania różnych zestawów danych JSON do innej klasy. Wykorzystaliśmy również nasze umiejętności programistyczne, aby dodać tablice, a nawet inną strukturę JSON w macierzystym formacie JSON.
Na koniec pracowaliśmy nad sposobami pobierania danych z innego źródła danych w celu przesłania wartości do kluczy JSON.
Mam nadzieję, że do tej pory podobała Ci się cała seria samouczków dotyczących JSON.
Samouczek nr 4: Używanie JSON do testowania interfejsu
rekomendowane lektury
- Jak tworzyć obiekty JSON za pomocą kodu C # (tworzenie JSON, część 1)
- Najpopularniejsze pytania i odpowiedzi do wywiadów JSON
- Używanie JSON do testowania interfejsu
- Samouczek JSON: wprowadzenie i kompletny przewodnik dla początkujących
- Struktura danych kolejki w C ++ z ilustracjami
- MongoDB Utwórz kopię zapasową bazy danych
- Struktura danych stosu w C ++ z ilustracjami
- Struktura danych listy połączonej cyklicznie w C ++ z ilustracją