dev/asp.net, c#

[c#] JSON 형변환(Json Convert) with JSON.NET

코딩for 2020. 10. 16. 16:25
반응형

어떤 언어든 코딩을 하면서 많이 사용하는것 중의 하나가 JSON 입니다.

 

C# 에서는 JSON 을 사용할때 가장 많이 이용하는 것 중의 하나가 바로 JSON.NET 으로 

내장객체인 JavaScriptSerializer 보다 더욱 성능과 기능이 뛰어난 Newtonsoft.Json 의 json.net 을 주로 이용합니다.

 

nuget Package 에서 "json" 으로 검색을 해봐도 가장 상위에 나오는것을 볼 수 있습니다.

 

 

 

참고 : Newton JSON.NET의 성능 비교표(www.newtonsoft.com/json)

 

 

 

JSON.NET 간단 사용법

    public class Books
    {
        public List<Book> Book { get; set; }

    }
    public class Book
    {
        public string TitleName { get; set; }
        public string Author { get; set; }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
      var list = new Books();
      list.Book = new List<Book>();
      list.Book.Add(new Book { TitleName = "asp.net styudy", Author = "asp.net" });
      list.Book.Add(new Book { TitleName = "c# styudy", Author = "csharp" });

      //1. class to json string
      var jsonStr = JsonConvert.SerializeObject(list);

      //2. string to class
      var jsonObj = JsonConvert.DeserializeObject<Book>(jsonStr);

      //3. json to xml 
      var node = JsonConvert.DeserializeXNode(jsonStr, "root");

      Response.Write(jsonStr.ToString());
	}

 

1. Class To Json

JsonConvert.SerializeObject() 를 이용하여 clsss 를 json 으로 Serialize (직렬화)

 

 

2. Json To Class

JsonConvert.DeserializeObject 를 이용하여 json 구조에 맞는 class로  Deserialize(역직렬화) 

 

 

3. Json To XML

Json.net 을 이용하면 Json 을 XML 로도 쉽게 변경이 가능합니다.

JsonConvert.DeserializeXNode(jsonStr, "root");

 

 

* json 으로 변경시 setting 을 통하여 여러가지 포맷으로 변경이 가능

 camelcase 로 명명 예) 

var settings = new JsonSerializerSettings() { 
	ContractResolver = new CamelCasePropertyNamesContractResolver() 
};

 var jsonStr = JsonConvert.SerializeObject(list, settings);

 

 

참고: https://www.newtonsoft.com/json

 

Json.NET - Newtonsoft

× PM> Install-Package Newtonsoft.Json or Install via VS Package Management window. ZIP file containing Json.NET assemblies and source code: Json.NET

www.newtonsoft.com

 

 

 

 

반응형