C# Language
시작하기 : Json with C #
수색…
소개
다음 주제에서는 C # 언어와 직렬화 및 비 직렬화 개념을 사용하여 Json과 작업하는 방법을 소개합니다.
간단한 Json 예제
{
"id": 89,
"name": "Aldous Huxley",
"type": "Author",
"books":[{
"name": "Brave New World",
"date": 1932
},
{
"name": "Eyeless in Gaza",
"date": 1936
},
{
"name": "The Genius and the Goddess",
"date": 1955
}]
}
Json을 처음 접했을 경우 여기에 예제 튜토리얼이 있습니다.
제일 먼저 : Json과 함께 작업 할 라이브러리
C #을 사용하여 Json과 작업하려면 Newtonsoft (.net 라이브러리)를 사용해야합니다. 이 라이브러리는 프로그래머가 객체 등을 직렬화 및 비 직렬화 할 수있는 메소드를 제공합니다. 방법과 사용법에 대한 자세한 내용을 알고 싶다면 자습서 가 있습니다.
Visual Studio를 사용하는 경우 Tools / Nuget Package Manager / Manage Package to Solution / 으로 이동하여 검색 창에 "Newtonsoft"를 입력하고 패키지를 설치하십시오. NuGet을 가지고 있지 않다면,이 자습서 가 도움이 될 것입니다.
C # 구현
일부 코드를 읽기 전에 json을 사용하여 프로그램을 프로그래밍하는 데 도움이되는 주요 개념을 이해하는 것이 중요합니다.
직렬화 : 객체를 응용 프로그램을 통해 전송할 수있는 바이트 스트림으로 변환하는 프로세스입니다. 다음 코드는 직렬화하여 이전 json으로 변환 할 수 있습니다.
직렬화 복원 : json / 바이트 스트림을 객체로 변환하는 프로세스입니다. 직렬화와 정반대의 과정. 이전 json은 아래 예제와 같이 C # 개체로 deserialize 할 수 있습니다.
이를 해결하려면 이미 설명한 프로세스를 사용하기 위해 json 구조를 클래스로 변환하는 것이 중요합니다. Visual Studio를 사용하는 경우 "Edit / Paste Special / JSON을 클래스로 붙여 넣기" 를 선택하고 JSON 구조를 붙여서 json을 클래스로 자동 변환 할 수 있습니다.
using Newtonsoft.Json;
class Author
{
[JsonProperty("id")] // Set the variable below to represent the json attribute
public int id; //"id"
[JsonProperty("name")]
public string name;
[JsonProperty("type")]
public string type;
[JsonProperty("books")]
public Book[] books;
public Author(int id, string name, string type, Book[] books) {
this.id = id;
this.name = name;
this.type= type;
this.books = books;
}
}
class Book
{
[JsonProperty("name")]
public string name;
[JsonProperty("date")]
public DateTime date;
}
직렬화
static void Main(string[] args)
{
Book[] books = new Book[3];
Author author = new Author(89,"Aldous Huxley","Author",books);
string objectDeserialized = JsonConvert.SerializeObject(author);
//Converting author into json
}
".SerializeObject"메서드는 매개 변수로 형식 개체를 받습니다. 따라서이 개체 에 아무 것도 넣을 수 있습니다.
직렬화 복원
어디에서나 파일이나 서버에서 json을받을 수 있으므로 다음 코드에 포함되지 않습니다.
static void Main(string[] args)
{
string jsonExample; // Has the previous json
Author author = JsonConvert.DeserializeObject<Author>(jsonExample);
}
".DeserializeObject"메서드는 ' jsonExample '을 " 작성자 "개체로 deserialize합니다. 이것이 클래스 정의에서 json 변수를 설정하는 것이 중요한 이유이므로 메소드가 그것을 채우기 위해 액세스합니다.
직렬화 및 역 직렬화 공통 유틸리티 함수
이 샘플은 모든 유형 객체 직렬화 및 직렬화 해제에 대한 공통 기능을 사용했습니다.
using System.Runtime.Serialization.Formatters.Binary; using System.Xml.Serialization; namespace Framework { public static class IGUtilities { public static string Serialization(this T obj) { string data = JsonConvert.SerializeObject(obj); return data; } public static T Deserialization(this string JsonData) { T copy = JsonConvert.DeserializeObject(JsonData); return copy; } public static T Clone(this T obj) { string data = JsonConvert.SerializeObject(obj); T copy = JsonConvert.DeserializeObject(data); return copy; } } }