본문 바로가기
delphi

JSON(JavaScript Object Notation) 이해하기(Delphi에서의 활용 방법)

by doran365 2024. 8. 7.

JSON(JavaScript Object Notation)은 자바스크립트 객체의 표현 방식으로, 특히 웹 개발에서 매우 중요한 역할을 합니다. 이번 글에서는 JSON의 기본 개념부터 Delphi에서의 활용 방법까지 자세히 알아보겠습니다.

JSON의 기본 개념

JSON은 텍스트 기반의 데이터 교환 형식으로, 자바스크립트 객체를 표현하는 데 사용됩니다. XML과 비교했을 때 단순하고, 브라우저 기반의 애플리케이션에서 쉽게 파싱할 수 있으며, 다양한 프로그래밍 언어와의 호환성이 뛰어납니다.

JSON의 구조

JSON 데이터는 두 가지 주요 구조를 가집니다:

  1. 객체 (Object): 이름-값 쌍의 집합
    { "Name": "John", "Age": 30 }
  2. 배열 (Array): 값의 순서 있는 리스트
    [ "Apple", "Banana", "Cherry" ]

Delphi에서의 JSON 처리

Delphi는 2010 버전부터 JSON을 지원하며, DBXJSON 유닛에 다양한 JSON 처리 클래스를 제공합니다.

Delphi의 JSON 클래스

Delphi에서 JSON 처리를 위해 제공되는 주요 클래스는 다음과 같습니다:

  • TJSONValue: 모든 JSON 값의 기본 클래스
  • TJSONTrue / TJSONFalse / TJSONNull: Boolean 및 Null 값 표현
  • TJSONString: 문자열 값 표현
  • TJSONNumber: 숫자 값 표현
  • TJSONObject: JSON 객체 표현
  • TJSONArray: JSON 배열 표현

JSON 객체 생성 및 조작

다음은 Delphi에서 JSON 객체를 생성하고 조작하는 예제입니다.

procedure CreateJSONObject;
var
  jsonObj: TJSONObject;
begin
  jsonObj := TJSONObject.Create;
  try
    jsonObj.AddPair('Name', 'Marco');
    jsonObj.AddPair('Value', TJSONNumber.Create(100));
    ShowMessage(jsonObj.ToString);
  finally
    jsonObj.Free;
  end;
end;

이 코드는 Name과 Value라는 두 개의 필드를 가진 JSON 객체를 생성하고, 이를 문자열로 변환하여 메시지 박스로 표시합니다.

JSON 배열 생성 및 조작

JSON 배열을 생성하고 조작하는 방법도 간단합니다.

procedure CreateJSONArray;
var
  jsonArray: TJSONArray;
begin
  jsonArray := TJSONArray.Create;
  try
    jsonArray.Add(22);
    jsonArray.Add('foo');
    jsonArray.Add(TJSONTrue.Create);
    ShowMessage(jsonArray.ToString);
  finally
    jsonArray.Free;
  end;
end;

이 코드는 숫자, 문자열, Boolean 값을 포함한 JSON 배열을 생성하고, 이를 문자열로 변환하여 메시지 박스로 표시합니다.

JSON 데이터 파싱

JSON 문자열을 Delphi 객체로 파싱하는 방법도 지원됩니다.

procedure ParseJSON(const jsonString: string);
var
  jsonValue: TJSONValue;
begin
  jsonValue := TJSONObject.ParseJSONValue(jsonString);
  try
    if jsonValue is TJSONObject then
      ShowMessage('Parsed JSON Object: ' + jsonValue.ToString)
    else if jsonValue is TJSONArray then
      ShowMessage('Parsed JSON Array: ' + jsonValue.ToString);
  finally
    jsonValue.Free;
  end;
end;

이 코드는 JSON 문자열을 TJSONValue 객체로 파싱하고, 객체 또는 배열로 인식하여 메시지 박스로 표시합니다.

JSON을 이용한 실용적인 예제

Delphi 애플리케이션에서 JSON을 사용하여 RESTful API와 통신하는 예제를 살펴보겠습니다.

RESTful API와의 통신

Delphi에서는 REST 클라이언트를 사용하여 쉽게 JSON 데이터를 주고받을 수 있습니다. 다음은 RESTful API를 호출하고 JSON 응답을 처리하는 예제입니다.

procedure CallRESTAPI;
var
  RESTClient: TRESTClient;
  RESTRequest: TRESTRequest;
  RESTResponse: TRESTResponse;
begin
  RESTClient := TRESTClient.Create('http://api.example.com/data');
  RESTRequest := TRESTRequest.Create(nil);
  RESTResponse := TRESTResponse.Create(nil);
  try
    RESTRequest.Client := RESTClient;
    RESTRequest.Response := RESTResponse;
    RESTRequest.Execute;
    
    if RESTResponse.StatusCode = 200 then
    begin
      ShowMessage('Response: ' + RESTResponse.Content);
      // JSON 파싱
      ParseJSON(RESTResponse.Content);
    end
    else
      ShowMessage('Error: ' + RESTResponse.StatusText);
  finally
    RESTClient.Free;
    RESTRequest.Free;
    RESTResponse.Free;
  end;
end;

이 코드는 특정 RESTful API를 호출하고, 응답을 JSON으로 파싱하여 처리합니다.

JSON 데이터를 사용한 TClientDataSet 채우기

응답받은 JSON 데이터를 TClientDataSet에 채워 데이터 그리드에 표시하는 방법도 있습니다.

procedure LoadJSONToClientDataSet(const jsonString: string; cds: TClientDataSet);
var
  JSONAdapter: TCustomJSONDataSetAdapter;
begin
  JSONAdapter := TCustomJSONDataSetAdapter.Create(nil);
  try
    JSONAdapter.Dataset := cds;
    JSONAdapter.LoadFromJSON(jsonString);
    cds.Open;
  finally
    JSONAdapter.Free;
  end;
end;

이 코드는 JSON 문자열을 TClientDataSet에 로드하여 데이터 그리드에 표시합니다.

결론

Delphi에서 JSON을 사용하는 방법을 이해하면, 다양한 웹 서비스와 손쉽게 통신할 수 있습니다. JSON의 간단한 구조와 높은 호환성 덕분에 Delphi 애플리케이션에서 데이터를 쉽게 처리하고 전송할 수 있습니다. 이번 글에서는 JSON의 기본 개념부터 Delphi에서의 실용적인 활용 방법까지 살펴보았습니다. 이제 JSON을 활용하여 더 효율적인 애플리케이션을 개발해보세요.