C#에서 JSON 개체를 만드는 방법을 논의하기 전에 먼저 JSON이 무엇인지부터 살펴보겠습니다. JSON은 JavaScript Object Notation을 의미합니다. 데이터를 교환하는 데 사용되는 매우 가벼운 텍스트 형식입니다. JSON은 객체, 배열, 문자열의 세 가지 스타일로 표현될 수 있습니다. 여기서는 JSON 객체에 대해 설명하겠습니다. JSON 객체는 "{"로 시작하고 "}"로 끝납니다. JSON 객체의 데이터는 키와 해당 값이 콜론 ":"으로 구분되고 각 키-값 쌍이 쉼표 ","로 구분되는 키-값 쌍으로 저장됩니다.
구문:
Newtonsoft 패키지를 사용하여 JSON을 생성하는 구문은 다음과 같습니다.
ClassName objectName = new ClassName(); string jsonStr = JsonConvert.SerializeObject(objectName);
설명: 위 구문에서는 먼저 데이터가 필요한 클래스의 객체를 JSON 형식으로 만든 다음 Newtonsoft 패키지의 JsonConvert.Serialize() 메서드를 사용하고 클래스 객체를 다음과 같이 전달했습니다. 객체의 데이터를 JSON 문자열로 변환한 후 JSON 문자열을 반환하는 이 메소드에 대한 매개변수입니다.
이후에는 아래 명령문을 사용하여 이 JSON 데이터를 파일에 저장할 수 있습니다.
using(var streamWriter = new StreamWriter(filePath, true)) { streamWriter.WriteLine(jsonStr.ToString()); streamWriter.Close(); }
위 명령문에서는 'filePath' 위치로 지정된 파일에 JSON 데이터를 쓰기 위해 StreamWriter 객체를 생성했습니다. 그런 다음 이 개체의 도움으로 WriteLine() 메서드를 사용하여 JSON 데이터를 파일에 기록했습니다.
C#에서는 .NET 네이티브 라이브러리를 사용하거나 타사 패키지를 사용하는 등 다양한 방법으로 JSON 개체를 생성할 수 있습니다.
네이티브 .NET 라이브러리를 사용하여 JSON 개체를 생성하려면 시스템을 추가해야 합니다. ServiceModel.Web을 프로젝트에 대한 참조로 사용하면 개체를 JSON 데이터로 직렬화하고 JSON 데이터를 역직렬화하는 DataContractJsonSerializer라는 클래스가 포함된 코드에 System.Runtime.Serialization.Json 네임스페이스를 가져올 수 있습니다. 개체에.
이 외에도 타사 패키지를 사용하여 JSON으로 작업할 수 있습니다. Newtonsoft.Json 패키지와 같습니다. 이 패키지를 설치하고 프로젝트에 추가하려면 Visual Studio에서 다음 단계를 따라야 합니다.
이 단계를 수행한 후 프로젝트의 참조를 확인하면 "Newtonsoft.Json"이 추가됩니다.
이제 .NET 유형과 JSON 유형 간 변환을 위한 메서드를 제공하는 JsonConvert라는 클래스가 포함된 코드에서 Newtonsoft.Json 네임스페이스를 가져올 수 있습니다.
.NET 네이티브 라이브러리를 사용하여 JSON 객체를 생성하는 예
코드:
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; namespace ConsoleApp4 { [DataContractAttribute] public class Student { [DataMemberAttribute] public int RollNo { get; set; } [DataMemberAttribute] public string FirstName { get; set; } [DataMemberAttribute] public string LastName { get; set; } [DataMemberAttribute] public string Address { get; set; } [DataMemberAttribute] public float TotalMarks { get; set; } public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { MemoryStream memoryStream = new MemoryStream(); //serializing object to JSON DataContractJsonSerializer ser = new DataContractJsonSerializer(student.GetType()); //writing JSON ser.WriteObject(memoryStream, student); memoryStream.Position = 0; StreamReader streamReader = new StreamReader(memoryStream); jsonStr = streamReader.ReadToEnd(); Console.WriteLine(jsonStr); } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
출력:
.NET 네이티브 라이브러리를 사용하여 JSON 개체를 생성한 다음 StreamWriter를 사용하여 결과 JSON 데이터를 파일에 쓰는 예
코드:
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; namespace ConsoleApp4 { [DataContractAttribute] public class Student { [DataMemberAttribute] public int RollNo; [DataMemberAttribute] public string FirstName; [DataMemberAttribute] public string LastName; [DataMemberAttribute] public string Address; [DataMemberAttribute] public float TotalMarks; public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; string filePath = @"E:\Content\student.json"; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { MemoryStream memoryStream = new MemoryStream(); //serializing object to JSON DataContractJsonSerializer ser = new DataContractJsonSerializer(student.GetType()); //writing JSON ser.WriteObject(memoryStream, student); memoryStream.Position = 0; StreamReader streamReader = new StreamReader(memoryStream); jsonStr = streamReader.ReadToEnd(); //checking if the file already exists if (File.Exists(filePath)) { //deleting file if it exists File.Delete(filePath); } //creating StreamWriter to write JSON data to file using (StreamWriter streamWriter = new StreamWriter(filePath, true)) { streamWriter.WriteLine(jsonStr.ToString()); streamWriter.Close(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
메모장에서 열린 Student.json 파일에서 위 프로그램의 출력 스크린샷을 아래에서 찾아보세요.
출력:
Newtonsoft 패키지를 사용하여 JSON 객체를 생성하는 예
코드:
using System; using Newtonsoft.Json; namespace ConsoleApp4 { public class Student { public int RollNo; public string FirstName; public string LastName; public string Address; public float TotalMarks; public Student(int RollNo, string FirstName, string LastName, string Address, float TotalMarks) { this.RollNo = RollNo; this.FirstName = FirstName; this.LastName = LastName; this.Address = Address; this.TotalMarks = TotalMarks; } } public class Program { public static void Main(string[] args) { string jsonStr; Student student = new Student(1, "Gaurang", "Pandya", "Thane, Mumbai", 800); try { //serializing student object to JSON string jsonStr = JsonConvert.SerializeObject(student); Console.WriteLine(jsonStr); } catch(Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); } } }
출력:
JSON 객체는 중괄호로 묶여 있으며 키-값 쌍을 포함합니다. 키와 해당 값은 콜론으로 구분됩니다. 여기서 키는 문자열이어야 하고 값은 유효한 데이터 유형이면 됩니다. JSON 개체의 각 키-값 쌍은 쉼표로 구분됩니다.
위 내용은 C# JSON 개체 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!