반응형

c# 개발을 시작하면서 api로 데이터교환시 json포맷을 많이 사용하는데

 

그에 따라 json 각 속성들을 하나하나 클래스나 구조체 형식으로 구현해서 파싱을 했었는데

 

이 사이트에 샘플 코드만 넣어주면 해당 속성값으로 클래스가 자동으로 생성된다.

 

참고하면 좋을듯 하여 공유해본다.

 

사이트 주소: https://json2csharp.com/

 

Convert JSON to C# Classes Online - Json2CSharp Toolkit

 

json2csharp.com

 

반응형

c#에서 json object(Newtonsoft.Json 패키지 사용)을 간단하게 DataTable 형식으로 변환하는 방법을 공유한다.

 

이 방법을 알기 전에는 컬럼 하나하나씩 모두 파싱해서 넣어줬는데, 간단하게 끝나니 업무량이 줄어들었다.

 

DeserializeObject함수에 DataTable 형식을 지정해주고 string으로 변환된 json object를 넘겨주면 된다.

string strJson = @"[{'color':'red','value':'#f00'},{'color':'green','value':'#0f0'},{'color':'blue','value':'#00f'},{'color':'cyan','value':'#0ff'},{'color':'magenta','value':'#f0f'},{'color':'yellow','value':'#ff0'},{'color':'black','value':'#000'}]";
DataTable dtTable = JsonConvert.DeserializeObject<DataTable>(strJson);

반응형

via@ https://www.wholetomato.com/features 

 

안 써본 사람은 있어도, 한 번만 써본 사람은 없다는 Visual Assist.

MS사의 Visual Studio 제품군을 이용한다면 한번씩은 들어봤을 터이고, 사용해봤을 범한 편리한 툴이다.

 

C#에서는 사용빈도가 높진 않지만 C++쪽에서는 은근 사용빈도가 높아 정리를 해보았다.

 

자주쓰는 단축키는 공식홈페이지의 문서에서 참조하여 정리하였다.

 

단축키는 기본 설정값 기준이다.

명령 설명 단축키
참조 찾기
(FindReferences)
현재 커서에 선택된 변수/함수가 참조되는곳 모두 찾기 Shift+Alt+F
심볼 찾기
(FindSymbolDialog)
대화상자가 나타나며, 키워드를 포함하는 현재 솔루션내 존재하는 심볼 나열 Shift+Alt+S
정의로 이동
(GotoImplementation)
현재 커서에 선택된 변수/함수 정의로 이동 Alt+G
헤더/소스 파일 전환
(OpenCorrespondingFile)
현재 문서의 헤더/소스 파일로 전환 Alt+O
파일 찾기
(OpenFileInSolutionDialog)
대화상자가 나타나며, 키워드를 포함하는 현재 솔루션 내 존재하는 파일 나열 Shift+Alt+O
리펙터 네이빙 변경
(RefactorRename)
현재 커서에 선택된 변수/함수의 네이밍 변경 대화상자.
(한번에 해당 변수/함수의 이름을 바꿀수 있어 유용)
Shift+Alt+R
스마트 선택영역 확장
(SmartSelectExtend)
현재 커서를 기준으로 여러번 누를시 선택영역 범위를 점차 늘림 (단어->문장->문단->블럭 순) Shift+Alt+]
스마트 블럭 선택영역 확장
(SmartSelectExtendBlock)
현재 커서를 기준으로 여러번 누를시 선택영역 범위를 블럭 단위로 늘림 Alt+]
스마트 선택영역 축소
(SmartSelectShrink)
위의 SmartSelectExtend와 반대되는 기능
선택 영역 범위를 점차 줄임
Shift+Alt+[ 
스마트 블럭 선택영역 축소
(SmartSelectShrinkBlock)

위의 SmartSelectExtendBlock와 반대되는 기능
선택영역 범위를 블럭단위로 줄임
Alt+[
반응형

지난번에 C++를 이용하여 로또(6/45) 번호를 생성하는 코드를 작성해봤는데 이번에는 C#을 이용하여 작성해봤다.


2019/03/29 - [Programming] - [C++] 로또 번호 생성 코드 (rand, list)



코드는 여타 로또 번호 생성하는 코드와 비슷하게 Rand함수를 이용한다.


C++ 이든 C#이든 Rand함수를 이용할 때 시드값(Seed)을 넣어줘야만 난수 생성시 중복되는 경우를 줄일 수 있다.


코드는 아래와 같다.


        private List GetLotteryNumber()
        {
            int nNum = 0;
            List listLottery = new List();
            for (int i = 0; i < LOTTONUM; i++)
            {
                Random rand = new Random(((int)DateTime.Now.Ticks) + i);
                nNum = rand.Next(1, 45);
 
                if(!listLottery.Contains(nNum))
                    listLottery.Add(nNum);
                else{
                    i--;
                    continue;
                }
            }
            return listLottery;
        } 


GetLotteryNumber 함수의 리턴값 타입으로 List를 이용했는데 이건 내가 쓰기 편해서 List를 이용했다.

더 쉬운 방법으로 배열을 이용하면 된다.

Random함수를 통해 난수를 1부터 45까지의 난수를 생성하여 중복된 값인지 체크하고 중복값이라면 반복문을 한스텝 빼주고 continue로 처리했다.


반응형

C#을 쓰면서 매번 느끼는 사실이지만, C++에 비해 개발 소요시간이 매우 단축된다는 것이다.

 

C++로 디렉토리 내 파일검색 메소드를 작성하려면 보통 20 라인으로 작성할 수 있다.

 

그런데 C#으로는 단 한줄로 디렉토리 내 모든 파일 목록을 가져올 수 있다.

 

심지어, 확장자 지정, 하위디렉토리 검색도 한번에 할 수 있다!

 

코드도 매우 간결하고, C++에서의 귀찮은 재귀함수 고려도 필요없었다.

 

 

 

 public string[] GetSearchFile(String _strPath) 
 {
   string[] files = {"", };
   try 
   {
     files = Directory.GetFiles(_strPath, "*.*", SearchOption.AllDirectories);
   } catch (IOException ex) 
   {
     MessageBox.Show(ex.Message);
   }
   return files;
 }

 

 

반응형

프로그램을 짜다 보면 랜덤한 스트링을 사용해야 할 때가 간혹 있다.


보통 테스트를 할때 임의의 문자열 값이 필요할때가 그렇다.


C++ 로 짤때에는 char 배열에 a부터 z, 0부터 9 넣고

랜덤시드로 한개씩 찝어서 길이에 맞춰 스트링으로 만드는 함수를 사용했었다.



C#도 마찬가지로 비슷하게 작성해봤다.


        
private static Random random = new Random((int)DateTime.Now.Ticks & 0x0000FFFF); //랜덤 시드값

public static string RandomString(int _nLength = 12)
        {
            const string strPool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  //문자 생성 풀
            char[] chRandom = new char[_nLength];

            for (int i = 0; i < _nLength; i++ )
            {
                chRandom[i] = strPool[random.Next(strPool.Length)];
            }
            string strRet = new String(chRandom);   // char to string
            return strRet;
        }



+ Recent posts