[C# PL/SQL] 14.오라클 프로시저에서 JSON 데이터 처리하기, JSON OBJECT, JSON TABLE, C#에서 JSON 파싱.

현대의 데이터베이스 환경에서 JSON(JavaScript Object Notation)은 매우 중요한 데이터 형식으로 자리잡았습니다. 특히, 오라클 데이터베이스는 JSON 형식을 natively 지원하여 개발자가 데이터를 더 유연하게 처리할 수 있게 만들어주고 있습니다. 본 글에서는 오라클에서 JSON 데이터 처리의 기본 개념, JSON_OBJECT와 JSON_TABLE 함수를 활용하여 JSON 데이터를 생성 및 조회하는 방법, 그리고 C#에서 JSON 데이터를 파싱하는 방법에 대해 설명하겠습니다.

1. JSON의 이해

JSON은 간단한 텍스트 기반의 데이터 형식으로 주로 웹 애플리케이션에서 데이터 교환을 위해 사용됩니다. JSON 데이터는 키-값 쌍으로 구성된 객체 형태를 가지고 있으며, 배열 및 중첩 객체를 사용할 수 있습니다. 예를 들어:

{
  "name": "John",
  "age": 30,
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  },
  "phones": ["123-456-7890", "987-654-3210"]
}

2. 오라클에서 JSON 데이터 저장

오라클 데이터베이스는 JSON 데이터를 저장하기 위한 자료형인 JSON을 지원합니다. 이를 통해 JSON 데이터를 효과적으로 저장하고 조회할 수 있습니다. JSON 데이터는 일반적인 문자열로 저장되며, 오라클 데이터베이스의 JSON 관련 함수를 사용하여 쉽게 처리할 수 있습니다.

2.1. JSON_OBJECT

JSON_OBJECT 함수는 JSON 객체를 생성하는 데 사용됩니다. 이 함수는 주어진 키와 값 쌍을 사용하여 JSON 형식의 데이터를 반환합니다. 예를 들어:

SELECT JSON_OBJECT('name' VALUE 'John', 'age' VALUE 30) AS json_data
FROM dual;

위 쿼리는 다음과 같은 JSON 데이터를 생성합니다:

{"name": "John", "age": 30}

2.2. JSON_TABLE

JSON_TABLE 함수는 JSON 데이터를 관계형 형식으로 변환하는 데 사용됩니다. 이 함수를 사용하면 JSON 데이터를 SQL 쿼리에서 쉽게 사용할 수 있도록 변환할 수 있습니다. 예를 들어, 다음과 같은 JSON 데이터를 갖는 경우:

[
  {"name": "John", "age": 30},
  {"name": "Jane", "age": 25}
]

이 데이터를 SQL 테이블로 변환하는 쿼리는 다음과 같습니다:

SELECT *
FROM JSON_TABLE(
  '[{ "name": "John", "age": 30 }, { "name": "Jane", "age": 25 }]',
  '$[*]'
  COLUMNS (
    name VARCHAR2(50) PATH '$.name',
    age NUMBER PATH '$.age'
  )
) jt;

3. 오라클 프로시저에서의 JSON 처리

오라클 프로시저 내에서 JSON 데이터를 처리하는 것은 자주 필요할 수 있습니다. 프로시저 안에서 JSON_OBJECT와 JSON_TABLE 함수를 조합하여 JSON 데이터를 생성하거나 변환할 수 있습니다.

CREATE OR REPLACE PROCEDURE get_json_data AS
  json_output CLOB;
BEGIN
  json_output := JSON_OBJECT(
    'employees' VALUE JSON_ARRAY(
      JSON_OBJECT('name' VALUE 'John', 'age' VALUE 30),
      JSON_OBJECT('name' VALUE 'Jane', 'age' VALUE 25)
    )
  );

  DBMS_OUTPUT.PUT_LINE(json_output);
END;

위의 프로시저는 두명의 직원 정보를 포함한 JSON 배열을 생성하여 출력합니다.

4. C#에서 JSON 데이터 파싱하기

C#에서는 JSON 데이터를 파싱하는 다양한 방법이 있습니다. 가장 일반적으로 사용되는 방법은 Newtonsoft.Json 라이브러리를 사용하는 것입니다. 이 라이브러리를 사용하면 JSON 데이터를 손쉽게 객체로 변환할 수 있습니다.

using Newtonsoft.Json;

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// JSON 데이터
string jsonData = "[{ \"name\": \"John\", \"age\": 30 }, { \"name\": \"Jane\", \"age\": 25 }]";

// JSON 문자열을 Employee 객체 배열로 변환
Employee[] employees = JsonConvert.DeserializeObject(jsonData);

foreach (var employee in employees)
{
    Console.WriteLine($"Name: {employee.Name}, Age: {employee.Age}");
}

위 코드는 JSON 문자열을 Employee 객체 배열로 변환하여 각 직원의 이름과 나이를 출력합니다.

5. 결론

오라클 데이터베이스에서 JSON 데이터를 처리하는 것은 매우 강력한 기능이며, JSON_OBJECT와 JSON_TABLE 함수를 통해 쉽게 데이터를 생성하고 조회할 수 있습니다. 또한, C#에서는 Newtonsoft.Json 라이브러리를 사용하여 JSON 데이터를 쉽게 파싱할 수 있습니다. 이 글에서 설명한 기술들을 사용하여 데이터베이스와 애플리케이션 간의 JSON 데이터 교환을 효과적으로 수행할 수 있을 것입니다.

더 알아보기 위해서는 오라클 공식 문서와 C#의 JSON 라이브러리에 대한 문서를 참고하시기 바랍니다.