NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    커스텀 엔지엠 RPA 매크로 - JSON을 배열로 파싱 해주는 커스텀 모듈 만들기. (JSON Parser)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 웹 API를 사용하거나 외부 API를 통해 데이타를 받으면 대부분 XML 또는 JSON입니다. 요즘은 JSON이 아닌 경우를 본적이 없을정도로 대세가 된듯 합니다. 불과 10년전만해도 XML로 되어 있었는데 말이죠^^; 아무튼, [ 스캔한 이미지에서 텍스트를 추출해서 엑셀로 정리 ]하는 예제를 만들다가 텍스트를 JSON으로 쉽게 변환할 수 있으면 좋겠다 싶어서 이 모듈을 만들게 되었습니다. JSON 모델은 아래와 같습니다.

    {
      "locale": "ko",
      "description": "Macro 「거대한」이라는 의미를 나타내는 접두어로 「아주 작은」이란 뜻의 접두어 마이크로(Micro)와는 비교된다. 
                             예를 들어 Macrophysics(거시물리학)이 그것. 
                             경제학 에서는 Microeconomics, 즉 미시경제학과 반대되는 Macroeconomics, 즉 거시경제학의 용례가 있다. 
                             최근에는 매크로가 「전체」 마이크로가 「개별」이라는 의 미가 되어 
                             '매크로'는 GNP, '마이크로'는 기업의 대명사처럼 쓰이는 경우도 있다. ",
      "boundingPoly": {
        "vertices": [
          {
            "x": 6,
            "y": 17
          },
          {
            "x": 954,
            "y": 17
          },
          {
            "x": 954,
            "y": 125
          },
          {
            "x": 6,
            "y": 125
          }
        ]
      }
    }

     

    엔지엠 프레임워크에서 텍스트를 JSON 모델로 쉽게 파싱하도록 처리 해주기 때문에 코딩이 그렇게 어렵지는 않습니다. 전체 코드는 아래와 같습니다.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomNgmParserModule
    {
        [Serializable]
        public class JsonParserModel : NGM.Models.Interface.BaseCustomToolModel
        { 
            /// <summary>
          /// 도구 상자에 표시될 카테고리 이름을 가져옵니다.
          /// </summary>
            public override string DisplayCategory => "NGMsoftware";
    
            /// <summary>
            /// 도구 상자에 표시될 액션 이름을 가져옵니다.
            /// </summary>
            public override string DisplayName => "텍스트 Json 변환";
    
            [Category("Data")]
            [DisplayName("아이템 키")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string Key { get; set; }
    
            [Category("Data")]
            [DisplayName("아이템 값")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string Value { get; set; }
    
            [Category("Data")]
            [DisplayName("아이템 키 목록")]
            [Browsable(true)]
            public List<string> Keys { get; set; } = new List<string>();
    
            [Category("Data")]
            [DisplayName("아이템 값 목록")]
            [Browsable(true)]
            public List<string> Values { get; set; } = new List<string>();
    
            [Category("Action")]
            [DisplayName("인덱스")]
            [Browsable(true)]
            [DefaultValue(0)]
            public int Index { get; set; }
    
            [Category("Action")]
            [DisplayName("텍스트")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string Text { get; set; }
    
            public override void Execute()
            {
                if (Keys == null)
                    Keys = new List<string>();
    
                if (Values == null)
                    Values = new List<string>();
    
                Keys.Clear();
                Values.Clear();
    
                var manager = new NGM.Utility.ParserManager.Manager();
                var items = manager.TextToJson(Text);
    
                foreach (var item in items)
                {
                    Keys.Add(item.Key);
                    Values.Add(item.Value);
                }
    
                Key = Keys[Index];
                Value = Values[Index];
            }
        }
    }

     

    내용이 좀 많긴한데요. 커스텀 모듈 프로젝트를 컴파일한 후 엔지엠 에디터의 관리자 메뉴에서 도구 모음 설치로 첨부된 dll을 선택해주면 자동 설치 됩니다.

    X536Pzb.png

     

     

    간단하게 JSON 텍스트를 넣고, 실행하면 키와 밸류가 쌍을 이루어 배열에 저장됩니다. 인덱스에 위치한 키와 밸류를 가져올 수 있습니다.

    izxZuSL.png

     

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.