Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 Newtonsoft.Json으로 JSON을 .NET 객체로 역직렬화하고 배열에서 원하는 값 하나만 추출하는 방법

C#에서 외부 API로부터 받은 JSON 데이터를 처리하려면 먼저 데이터를 가져온 뒤, 이를 .NET 객체로 역직렬화(deserialization)하는 과정이 필요합니다. 이 글에서는 WebClientNewtonsoft.Json(Json.NET)을 활용해 JSON을 객체 배열로 변환하고, 그중 원하는 값 하나만 선택하는 방법을 소개합니다.

WebClient 클래스란?

WebClient 클래스는 URI로 식별되는 로컬, 인트라넷 또는 인터넷 리소스에 데이터를 전송하거나 수신하기 위한 공통 메서드를 제공합니다.

WebClient는 내부적으로 WebRequest 클래스를 사용하여 리소스에 접근합니다. 따라서 WebClient 인스턴스는 WebRequest.RegisterPrefix 메서드로 등록된 모든 WebRequest 파생 클래스를 통해 데이터에 접근할 수 있습니다.

그중 DownloadString 메서드는 지정된 리소스에서 문자열(String) 형태의 데이터를 다운로드하여 반환하는 역할을 합니다.

또한 요청 시 선택적인 헤더(optional header)가 필요하다면 반드시 Headers 컬렉션에 해당 헤더를 추가해야 합니다.

예제 시나리오

  • 아래 예제에서는 테스트용 REST API인 https://jsonplaceholder.typicode.com/posts URL을 호출합니다.
  • 응답으로 받은 JSON 문자열을 User[] 배열 타입으로 역직렬화합니다.
  • 역직렬화된 User 배열에서 첫 번째 요소의 값을 출력합니다.

코드 예제

class Program{
    static void Main(string[] args){
        var client = new WebClient();
        var json = client.DownloadString("https://jsonplaceholder.typicode.com/posts");
        var userPosts = JsonConvert.DeserializeObject<User[]>(json);
        System.Console.WriteLine(userPosts[0].title);
        Console.ReadLine();
    }
}
public class User{
    public string userId { get; set; }
    public string id { get; set; }
    public string title { get; set; }
    public string body { get; set; }
}

실행 결과

sunt aut facere repellat provident occaecati excepturi optio reprehenderit

핵심 정리

위 예제의 흐름을 단계별로 정리하면 다음과 같습니다.

  1. WebClient.DownloadString으로 API 응답을 문자열(JSON)로 가져옵니다.
  2. JsonConvert.DeserializeObject<T>를 사용해 JSON 문자열을 User 객체 배열로 변환합니다.
  3. 배열 인덱스(예: userPosts[0])를 지정해 원하는 값 하나만 선택하여 출력합니다.

참고로 최신 .NET 환경에서는 WebClient보다 HttpClient 사용이 권장되며, 비동기 처리가 필요한 경우 HttpClient.GetStringAsync와 함께 Newtonsoft.Json 또는 System.Text.Json을 조합하는 방식이 일반적입니다.