how create json structure using c
JSON 구조 만들기 (2 부) :
이전 튜토리얼에서 우리는 샘플 데이터 세트를 사용하여 간단한 JSON 파일 생성 .
또한 데이터를 JSON 형식으로 직렬화하기위한 json.Net 프레임 워크의 사용에 대한 세부 정보도 알게되었습니다. C # 및 Visual Studio를 활용하여 우리가 제공 한 데이터와 키 값을 사용하는 간단한 콘솔 애플리케이션을 만든 다음 해당 키 값을 JSON 구조로 직렬화했습니다. 이제이 튜토리얼에서 진행할 내용을 살펴 보겠습니다.
이 자습서에서는 더 복잡한 JSON 구조를 만드는 방법에 대해 설명합니다. 여러 데이터 세트로 배열을 만들고 JSON에서 중첩 구조를 만드는 방법도 살펴 봅니다.
다양한 시스템 간의 데이터 전송에 사용되는 대부분의 JSON 파일에는 더 복잡한 데이터 구조가 포함되어 있습니다. 따라서 복잡한 JSON 구조에 대해 배우면 JSON 스키마 요구 사항을 기반으로 테스트 데이터를 만드는 데 도움이됩니다.
학습 내용 :
- 코드 작성
- JSON에 여러 데이터가있는 배열 추가
- JSON 키에 할당하기 전에 데이터에 대한 작업 수행
- 중첩 된 JSON 구조 만들기
- Excel 시트를 JSON 용 데이터 원본으로 사용
- 결론
- 추천 도서
코드 작성
이 자습서의 이전 게시물을 참조 할 것입니다. 따라서 나는 모든 사람들이이 튜토리얼을 진행하기 전에 먼저 이전 튜토리얼을 진행할 것을 제안합니다.
이전 튜토리얼에서 사용한 것과 동일한 JSON 데이터를 사용합니다. 또한 이전 JSON 예제를 위해 작성한 것과 동일한 코드 세트에 대해 후속 조치를 취할 것입니다.
지금 시작하겠습니다. !!
JSON에 여러 데이터가있는 배열 추가
JSON에 배열을 추가하려면 이전 데이터 세트에 배열 키를 추가하겠습니다.
데이터 세트는 다음과 같이됩니다.
JSON에 배열 객체를 추가하는 것은 다른 키 값을 추가하는 것과 유사합니다. 배열 자체를 선언 할 때 값을 직접 할당 할 수 있습니다. 값이 배열에 할당되면 JSON newtonsoft는 객체를 키-값 쌍으로 직렬화합니다.
JSON에 배열을 추가하기 위해 '종업원' 수업 자체. (자세한 내용은 이전 튜토리얼을 참조하십시오)
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' }; } }
보시다시피 Employee 클래스에서 Array를 직접 선언했습니다. 주요 방법을 변경하지 마십시오. JSON 객체에 대해 다른 클래스를 생성하면 객체를 구성하는 데 도움이됩니다.
JSON 구조가 변경되거나 다른 데이터 세트를 추가하려는 경우 프로젝트 전체를 변경하는 대신 특정 클래스 파일 만 변경하면됩니다. 즉, Main 메서드는 대부분 동일하게 유지되고 변경 사항은 클래스 내에서만 발생합니다.
프로그램을 실행하고 배열로 JSON 파일을 생성 해 보겠습니다.
이제 내용을 복사하고 붙여 넣기 여기 생성 된 JSON이 유효한지 확인합니다.
클릭 JSON 유효성 검사 버튼을 눌러 확인합니다. JSON 키-값 쌍이 정렬되고 지정된 데이터 세트에 대해 유효성 검사가 수행됩니다.
JSON 키에 할당하기 전에 데이터에 대한 작업 수행
데이터가 일부 있고 JSON 키에 값으로 할당하기 전에 해당 데이터에 대해 일부 작업을 수행한다고 가정 해 보겠습니다.
그런 경우 어떻게해야합니까?
예를 들면 : JSON에 전달한 직원 ID가 두 부분으로 구성되어 있다고 가정 해 보겠습니다. 처음 세 글자는 위치 코드를 나타내고 마지막 4 자리는 직원 번호를 나타냅니다. 둘 다 연결하면 직원의 직원 ID가 제공됩니다.
위치 코드와 직원 번호를 별도로받은 경우이를 연결하여 직원 ID를 만들어야합니다. 그래야만 JSON을 통해 전달할 수 있습니다.
이러한 유형의 시나리오를 극복하려면 데이터를 키에 할당하기 전에 데이터에 대한 작업을 수행해야합니다.
이 작업을 수행하는 방법을 살펴 보겠습니다.
직원 클래스로 돌아가서 모든 작업을 수행 할 다른 클래스를 만들어 보겠습니다.
여기서는 직원 데이터에 대한 작업을 포함하고 수행 할 다른 클래스를 만듭니다.
새 클래스 'EmployeeData'를 만들어 보겠습니다.
클래스가 생성되었으므로 이제 공용 액세스 지정자와 반환 유형을 'Employee'클래스로 사용하여 메서드를 생성 해 보겠습니다. 메소드 이름을 다음과 같이 제공했습니다. “EmployeeDataOps” . 그러나 자신의 이름을 제공 할 수 있습니다. 더 간단하게 만들기 위해이 메서드 내에서 매개 변수를 전달하지 않습니다.
반환 유형을 클래스로 설명했듯이 Employee 클래스의 인스턴스를 반환해야합니다. 이를 위해 메서드 내부에 클래스 객체를 생성합니다.
여기에서 이름이 Employee 클래스에 대한 개체를 만들었습니다. EmpObj 메서드의 끝에서 객체를 반환했습니다.
전체 위치 코드와 직원 번호를 나타내는 EmployeeData 클래스 내에 두 개의 정수를 정의 해 보겠습니다. 선언되면이를 사용하여 작업을 수행 한 다음 각 키에 값을 할당합니다.
int locationCode = 569; int employeeNumber = 8523;
이제 위치 코드와 직원 번호가 있으므로 직원 ID를 찾는 작업을 수행 할 수 있습니다. 이를 위해 두 정수를 연결하는 간단한 코드를 작성합니다.
int empID = int.Parse(locationCode.ToString() + employeeNumber.ToString());
이것은 단순히 직원 ID를 형성하는 두 정수를 연결합니다. 변수 아래에 직원 ID를 저장했습니다. 'empID' , 이제이 변수를 EmpObj의 'employeeID'에 전달합니다.
Employee EmpObj = new Employee(); EmpObj.employeeID = empID; return EmpObj;
전체 샘플 코드는 다음과 같습니다.
예제 및 구문이 포함 된 유닉스 명령
이전에 Employee 클래스의 employeeID 변수에 할당 한 값을 제거 했습니까? 값을 반환 할 때 이렇게했습니다. EmployeeDataOps () 방법. 따라서 변수에 대한 데이터는이 메서드 자체에서 제공됩니다. 이렇게하면 값을 직접 선언 할 필요가 없습니다.
이제 메서드를 사용 했으므로이 메서드를 호출 할 수 있도록이 메서드의 인스턴스를 기본 메서드에 추가해야합니다.
이를 위해 메인 메소드에 다른 클래스 객체를 생성합니다. “EmployeeData” 수업.
EmployeeData empData = new EmployeeData();
클래스 객체를 생성했으면 이제이 클래스 내의 메서드를 직원 클래스에 대해 이전에 생성 한 Emp 객체에 할당합니다.
emp = empData.EmployeeDataOps();
마지막으로 main 메서드 내부의 코드는 다음과 유사합니다.
몇 가지 테스트 데이터를 입력 해 보겠습니다.
위치 코드 = 123
사원 번호 = 9874
이 데이터를 코드에 넣고 main 메서드의 최종 변경 사항을 적용합니다. 이제 코드를 완성했습니다. 이제 코드를 실행하고 JSON의 유효성을 검사 해 보겠습니다.
다음은 생성 된 JSON입니다.
보시다시피 직원 ID에 대한 새 연결 값이 JSON 값에 입력되었습니다.
이 JSON을 복사하여 붙여 넣습니다. 여기 구조를 확인합니다. JSON Lint 사이트에 텍스트를 넣습니다.
유효성 검사 버튼을 사용하여 아래와 같이 구조의 유효성을 검사합니다.
중첩 된 JSON 구조 만들기
지금까지 논의한 예제는 주로 배열 또는 객체 내부의 문자열 및 숫자 값을 사용합니다. 그러나 JSON은 배열 요소와 동일한 개념을 사용하여 전체 JSON 개체를 표현하는 데 사용할 수도 있습니다. 목록 내의 개체 멤버는 자체 개체 및 배열 키를 사용할 수 있습니다.
이전 튜토리얼 중 하나 인 JSON 소개에서 중첩 된 JSON이 어떻게 생겼는지 먼저 살펴 보았습니다. 이 튜토리얼에서는 직원에게 Car가 있고 JSON에는 직원 자동차에 대한 모든 세부 정보도 포함되어야한다고 가정합니다.
따라서 마지막에 얻는 JSON 구조는 다음과 유사합니다.
여기에는 모든 데이터가 포함 된 직원 JSON이 있고 직원 JSON 내에 중첩 된 Car JSON 개체도 있습니다. Car 개체에는 자체 키 및 값 집합이 있습니다.
이 JSON을 프로그래밍 방식으로 만들어 보겠습니다.
이를 위해 이전 자습서에서 만든 것과 동일한 JSON으로 시작합니다. 더 쉽게 만들기 위해 새 클래스에 새 JSON 개체 (예 : Car JSON)를 만듭니다. 새 클래스 자동차를 추가하고 공용 액세스 지정자를 사용하여이 클래스 내부의 모든 개체를 추가합니다.
이제 여기에 직접 값을 추가하거나 새 클래스를 작성하고 클래스 개체 반환 유형이있는 사용자 지정 메서드를 만들어 이전 자습서에서 수행 한 것과 유사한 값을 할당 할 수 있습니다. 편의상 키 변수에 직접 값을 할당합니다.
이제 객체와 값이있는 새 클래스를 만들었습니다. 다음 단계에서는 이것을 Employee JSON 구조에 추가하여 JSON 직렬화가 발생하면 Car 클래스의 키-값도 직원 클래스와 함께 직렬화되어야합니다. 중첩 JSON.
이를 수행하려면 먼저 Employee 클래스에 클래스 유형 객체 car를 추가해야합니다. 이 개체는 Car 클래스에있는 값을 저장하는 데 사용됩니다.
위와 같이 데이터 유형이 Car 클래스 인 새 변수를 할당했습니다. 이제 EmployeeData 클래스 내부에서 만든 EmployeeDataOps () 메서드로 이동하겠습니다. Car 클래스에서 변수와 값을 호출하는 코드를 작성합니다.
먼저 자동차 클래스에 대한 클래스 개체를 만들어 보겠습니다.
Car carObj = new Car();
이 개체에는 자동차 클래스의 모든 데이터가 포함됩니다. car 클래스의 모든 데이터를이 객체로 선언하면 다음 단계는이 데이터 (car 객체 내에 포함 된 데이터)를이 데이터를 보유하기 위해 생성 한 car 변수에 할당하는 것입니다.
이를 위해 car 변수에 액세스하기 위해 생성 한 Employee 객체를 사용합니다. 그런 다음 데이터가있는 car 객체를 car 변수에 직접 할당 할 수 있습니다.
EmpObj.car = carObj;
그게 다입니다. 한 클래스에서 변수를 만든 다음 다른 개체를 만들어 다른 클래스의 값에 액세스 한 다음 값을 첫 번째 변수에 할당했습니다.
이제 프로그램을 실행하고 원하는 JSON을 생성 할 수 있는지 살펴 보겠습니다.
위와 같이 car json 키가 생성되었으며 여기에는 Car 클래스에 키와 값으로 입력 한 모든 데이터가 포함되어 있습니다. 이제 다시 JSON 콘텐츠를 복사하고 여기 JSON의 유효성을 검사합니다.
모든 JSON 콘텐츠를 텍스트 영역에 복사하고 “JSON 확인 ”버튼.
따라서 JSONlint 사이트는 데이터를 정렬하고 완벽하게 검증했습니다. 필요에 따라 'car'객체가 JSON 구조로 배열 된 것을 볼 수 있습니다. 동일한 프로세스를 사용하여 여러 수준의 중첩 된 JSON을 만들 수 있습니다. 계속해서 JSON 객체를 클래스에 추가하고 그 값을 클래스 변수에 할당하십시오.
보시다시피 main 메서드에서 코드를 변경할 필요도 없습니다.
Windows 10 용 무료 PC 수리 소프트웨어
Excel 시트를 JSON 용 데이터 원본으로 사용
이전 자습서에서 다양한 JSON 구조를 만드는 여러 방법에 대해 논의했습니다. 그러나 우리의 모든 구조에는 큰 문제가있었습니다. 우리는 항상 키의 값을 하드 코딩했습니다.
이 자습서에서는 Excel 시트를 사용하여 데이터를 JSON 키에 공급할 수있는 방법에 대해 설명합니다. 이전 튜토리얼에서 작성한 것과 동일한 코드에 대해 논의 할 것이므로이 튜토리얼을 진행하기 전에 앞서 논의한 모든 튜토리얼을 살펴 보는 것이 좋습니다.
단계별로 진행하면 전체 개념을 더 잘 이해하는 데 도움이됩니다.
여러분이 JSON을 생성하기위한 기본 코드를 이해 하셨기를 바랍니다.이 부분에서는 동일한 코드 구조를 진행하겠습니다.
먼저 JSON 데이터로 엑셀 파일을 만들어 보겠습니다.
다음과 같은 세부 정보로 employeeData.xlsx 파일을 생성했습니다.
Excel에서 값을 추출하기위한 코드를 작성하기 전에 프로젝트에 어셈블리 참조를 추가해야합니다. Office 개체에 액세스하기 위해 C #은 Microsoft Office Interop을 제공합니다. 이는 사무실 개체에 쉽게 액세스 할 수 있도록하는 데 매우 유용합니다.
자바에서 이중 연결 목록 만들기
이 프로젝트에서는 Excel을 사용하므로 Microsoft Office Interop Excel 어셈블리 참조를 사용합니다.
설치하려면 참조를 마우스 오른쪽 버튼으로 클릭하십시오. 솔루션 탐색기에서 NuGet 패키지 관리 . 검색 창에 Microsoft Office Interop Excel을 작성하면 검색 결과에 필요한 패키지가 표시됩니다.
Microsoft Office Interop Excel을 받으면 설치 버튼 설치합니다.
설치가 완료되면 Microsoft Office Interop Excel이 프로젝트의 어셈블리 참조 목록에 추가되었음을 확인할 수 있습니다.
먼저 다른 Excel 요소를 할당 해 보겠습니다.
Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
여기에서는 Excel 응용 프로그램, Excel 통합 문서 및 Excel 워크 시트에 값을 할당했습니다. 이 값이 정의되면 다음 단계에서이를 사용하여 Excel 시트의 값에 액세스합니다.
Excel 시트에서 값을 가져 오려면 일반적으로 수행하는 단계는 무엇입니까?
먼저 Excel 응용 프로그램에 액세스 한 다음 Excel 통합 문서와 Excel 워크 시트를 열고 나중에 행 및 열 값을 기반으로 요소를 찾습니다. 우리는 여기서 비슷한 것을 할 것입니다.
이 코드는 엑셀 애플리케이션에 액세스합니다.
xlApp = new Microsoft.Office.Interop.Excel.Application();
이 코드는 주어진 위치에 주어진 이름으로 통합 문서를 엽니 다.
xlWorkBook = xlApp.Workbooks.Open(@'D:json employeeData.xlsx', 0, true, 5, '', '', true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, ' ', false, false, 0, true, 1, 0);
이제 통합 문서 내의 특정 워크 시트에 액세스하는 코드를 작성합니다. 'Sheet1'(Excel 시트의 기본 이름)이라는 워크 시트가 있습니다.
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets('Sheet1');
WorkSheet에 액세스 했으므로 이제 다음 단계는 올바른 열과 올바른 데이터를 찾는 것입니다. 먼저 '키'가있는 열을 검색합니다.
예를 들어, 먼저 값이 'FirstName'인 열을 검색해 보겠습니다. 값을 찾으면 열 번호를 추출합니다. 그런 다음 첫 번째 행에는 머리글이 있고 두 번째 행에는 데이터가 포함되어 있으므로 열 번호와 행 번호를 사용하여 정확한 데이터를 추출합니다.
이것은 변수에 FirstName의 열 번호를 저장합니다.
var colmnVal = xlWorkSheet.Columns.Find('FirstName').Cells.Column;
이제 FirstName의 열 번호를 사용하여 그 아래 셀에서 값을 추출합니다. 아시다시피 value 메소드는 문자열 유형 만 반환하므로이를 문자열 변수에 저장합니다.
string frstName = xlWorkSheet.Cells(2, colmnVal).Text.ToString();
이제 변수에 저장된 이름의 값이 있습니다. 따라서 메서드에서 정의한 employee 개체를 사용하여 값을 할당합니다.
우리의 메서드를 사용하여 값을 반환하므로 Employee 클래스에서 할당 / 하드 코딩 한 모든 값을 제거하십시오.
그러나 이것에는 한 가지 문제가 있습니다. '.본문' 함수는 항상 문자열 값을 반환합니다. 따라서 정수인 사원 ID 값을 추출하려면 문자열로도 추출됩니다. 따라서이 문자열을 JSON 객체에 할당하기 전에 정수로 변환해야합니다. 이를 위해 값을 정수로 직접 구문 분석합니다.
따라서 employeeID의 코드는 다음과 같습니다.
var colmnEmpID = xlWorkSheet.Columns.Find('employeeID').Cells.Column; string emplyID = xlWorkSheet.Cells(2, colmnEmpID).Text.ToString(); int emplyIDint = Int32.Parse(emplyID);
마지막으로 JSON이 employeeID를 정수 값으로 인식하므로 문자열 값을 정수로 구문 분석합니다.
따라서 4 개 열 모두에 대한 데이터를 가져 오는 전체 코드는 다음과 같습니다.
이제 우리가해야 할 일은 엑셀 시트의 데이터로 만든 변수를 직원 개체에 할당하는 것입니다.
모든 것이 설정되었으므로 이제 프로젝트를 빌드합니다. 빌드가 완료되면 프로그램을 실행하여 JSON을 생성합니다.
다음 JSON이 생성됩니다.
이제 JSON의 데이터를 Excel 시트의 데이터와 비교해 보겠습니다.
위와 같이 JSON 데이터는 Excel 시트의 4 개 열 모두에있는 데이터와 일치합니다. 프로그램에서 생성 한 JSON을 검증 해 보겠습니다. 그렇게하기 위해 우리는 다시 방문 할 것입니다 여기 . 모든 JSON 콘텐츠를 텍스트 영역에 복사하고 “JSON 확인” 단추.
만세! Excel의 데이터를 사용하여 유효한 JSON을 만들었습니다.
당신을위한 운동 :
3 단계 중첩 JSON을 만듭니다. 상위 JSON 회사를 만들고 이전에 만든 직원 JSON을 자동차 JSON과 함께 중첩합니다.
결론
이제 튜토리얼이 끝났습니다. 긴 튜토리얼 이었지만 몇 가지를 배웠습니다. C # 프로그래밍을 사용하여 간단한 JSON을 만드는 방법과 다양한 JSON 데이터 집합을 다른 클래스로 분류하는 이점을 배웠습니다. 또한 프로그래밍 기술을 사용하여 부모 JSON 내부에 배열과 다른 JSON 구조를 추가했습니다.
마지막으로 다른 데이터 소스에서 데이터를 가져와 값을 JSON 키에 공급하는 방법을 연구했습니다.
지금까지 모든 JSON 튜토리얼 시리즈를 즐겼기를 바랍니다.
튜토리얼 # 4 : 인터페이스 테스트에 JSON 사용