수색…


소개

다음 주제에서는 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;
        }
}
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow