개발

C# Dictionary를 JSON으로 저장하기

워시기 2024. 11. 15. 10:05
반응형

프로그램 작성시 설정값들을 만들고 이 값을 저장하여 프로그램 재실행시 사용해야 될 경우가 있습니다.

이럴때 저장을 하는 다양한 방법이 있습니다.

저는 보통 예전에 설정 파일들은 INI파일 또는 xml로 저장을 하고 프로그램 시작시 설정값을 가져오는 방식으로 작성을 합니다.

 

JSON 파일도 쓰기가 많이 좋아서  최근에 다루기 시작했는데 이번에 C#으로 JSON 파일을 저장하고 로드하는 방법에 대해 적어볼까 합니다.

현재 제가 기록하고 있는 C#으로 GPIB 통신하기에도 장비검색이후 별칭으로 주소값과 함께 저장하는 내용으로 작성하였습니다.

JSON은 형태가 키-값 페어로 저장되기에 현재 저장될 딕셔너리 형태 "장비 별칭" : "주소"와 같기에 딕셔너리 데이타를 JSON 데이타로 저장하는 코드를 작성하기로 하였습니다.

현재 포스팅하고 있는 부분에도 작성을 한 클래스 입니다.

 

JSON(JavaScript Object Notation)이란?

JSON(JavaScript Object Notation)은 사람이 읽을 수 있고 시스템에서 구문 분석할 수 있는 방식으로 데이터를 저장하고 교환하기 위한 텍스트 기반 형식입니다. 결과적으로 JSON은 비교적 쉽게 학습하고 문제를 해결할 수 있습니다. JSON은 JavaScript에 기반하지만, 다양한 플랫폼 및 프로그래밍 언어에서 데이터 교환을 단순화하는 매우 강력한 데이터 형식으로 성장했습니다. 웹 개발, 데이터 분석 또는 소프트웨어 엔지니어링에 관여하는 경우 JSON은 중요한 데이터 형식입니다.

 

핵심 

JSON은 웹 개발자가 서버와 웹 어플리케이션 간에 데이터를 전송하는데 자주 사용하는 인기 있는 데이터 형식입니다.

JSON은 텍스트 기반이므로, 인간이 쉽게 읽고 컴퓨터가 쉽게 이해합니다.

JSON의 언어 독립적 특성은 다양한 프로그래밍 언어와 플랫폼에서 데이터를 교환하는데 이상적인 형식입니다.

만은 데이터베이스가 JSON으로 데이터를 저장하고 교환하기 위해 등장하였습니다.

 

인터넷에 찾아보니 JSON에 대한 이해와 핵심을 잘 정리한것 같아서 위에 글 퍼왔습니다.

 

 

VisualStudio에서 Nuget 패키지 관리를 실행하면 됩니다.

 

Nuget 패키지 관리자란?

VisualStudio에서 오픈소스, 라이브러리 등을 쉽게 다운받고 설치할 수 있는 패키지 관리자 입니다.

 

메뉴에서 프로젝트=>Nuget 패키지 관리로 가서 실행을 하시면 됩니다.

 

Nuget 패키지 관리자가 실행이 되면 

[찾아보기] => [검색란에 Json입력] => [Newtonsoft.Json 검색됨] => [우측에 상세 정보란에 설치 클릭]

위와 같이 수행하면 설치 화면이 나올것 입니다.

확인을 눌러 설치를 진행하시면 됩니다.

 

설치가 완료되면 JsonManager를 작성합니다.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Newtonsoft.Json;
using System.IO;
using System.Windows.Forms;


namespace GPIB_Demo
{
    public static class JsonManager
    {
        //====================================================================
        // 딕셔너리를 Json으로 저장
        //====================================================================
        public static void MakeJsonFile(Dictionary<string, string> deviceSetInfoDic)
        {
            File.WriteAllText(Application.StartupPath + @"\\Addr.json", JsonConvert.SerializeObject(deviceSetInfoDic));
        }
        //====================================================================
        // Json파일을 딕셔너리로 불러옴
        //====================================================================
        public static Dictionary<string, string> GetJsonFile()
        {
            return JsonConvert.DeserializeObject<Dictionary<string, string>>(File.ReadAllText(Application.StartupPath + @"\\Addr.json"));
        }
    }
}

 

위와 같이 작성을 하였습니다.

바로 접근을 위해 static 클래스로 하였고 각 메서드들도 static입니다.

JsonManager는 Json 파일의 생성과 로드를 담당하고 있습니다.

JSON 관련 메서드를 추가할 때는 JsonManager만 수정하시면 됩니다.

 

Json파일 저장 위치는 Application.StartupPath + @"Addr.josn" 이라고 작성하여 프로그램 시작위치에 Addr.json에 저장이 됩니다.

 

 

장비 검색을 하고 Set 버튼을 눌러 [Item]값과 [Addr]값을 Addr.json 파일로 저장하게 하였습니다.

 

 

 

프로그램 실행 위치에 Addr.json이 저장되어 있는것을 알 수 있습니다.

 

 

메모장으로 열어보시면 [별칭] : [주소] 형태로 저장이 되어 있는것을 확인하실 수 있습니다.

이제 프로그램을 재실행시 위의 파일을 불러와서 연결확인을 하도록 합니다.

장비가 바뀌지 않았다면 검색하는 행위를 반복하지 않고 바로 장비를 사용하도록 합니다. 

 

현재 제작하고 있는 프로그램의 한 클래스인 JsonManager와 Dictionary <=> JSON 을 설명하는 시간이어서 좋네요.

여기까지 읽어주셔서 감사합니다~

 

반응형

'개발' 카테고리의 다른 글

C#으로 하는 GPIB 통신 -7-  (16) 2024.11.15
C#으로 하는 GPIB 통신 -6-  (13) 2024.11.15
C#으로 하는 GPIB 통신 - 5 -  (5) 2024.11.14
CR(Carriage Return) LF(Line Feed)란?  (47) 2024.11.13
C#으로 하는 GPIB 통신 -4-  (12) 2024.11.13