JSON 규칙
사실 이 부분은 어떻게 작성할지 고민을 많이 했습니다.
많은 코인 거래소 API는 json으로 되어있으며 해당 json 값을 파싱 해서 사용해야 합니다.
json 값이라고 해서 특별할건 없습니다.
국내에서 크다는 코인 거래소 3개는 전부다 json 형태입니다.
json arrow 형태로 보내줍니다. 해당 값의 특징을 설명하자면
코드의 시작과 끝은 [ ] 구분
1개 타입의 정보는 { } 구분
해당 값의 세부 항목은 , 구분
이렇게입니다.
이해가 안 될 수 있기 때문에 그냥 예시로 설명드리겠습니다.
위 사진은 업비트에서 결괏값으로 보내주는 값입니다.
항목 이름 | 개수 |
currency | 2 |
balance | 2 |
locked | 2 |
avg_buy_price | 2 |
avg_buy_price_modified | 2 |
unit_currency | 2 |
해당 항목은 각 2개씩 존재합니다.
그리고 한 묶음으로 { } 사이에 존재합니다.
그리고 { }를 묶어서 [ ] 사이에 존재합니다.
즉 , Currency : KRW에 대한 balance , locked ,... 을 { } 안에 넣어두고
Currency : BTC에 대한 balance , locked , ... 을 {} 안에 넣어뒀습니다.
그러면 엑셀에서 API를 연결하여 받아오면 저 값들은 한 줄로 옵니다.
이런 식으로 말이죠
그러면 이제 이것을 저희가 사용하고자 하는 형태로 변경하는 게 바로 파싱입니다.
엑셀 자체 단어를 열심히 조각내는 split , mid , instr , find 등을 사용해서 파싱 할 수 있지만 (저는 이걸 사용했습니다.)
아주 좋은 코드가 있어서 소개합니다.
VBA JSON Parse 코드 다운 및 설정
구글에 검색하면 바로 첫 Github 사이트가 존재합니다.
아래 사이트에 접속하셔서 다운로드하시면 됩니다.
사실 해당 사이트에 설명이 존재하지만 그냥 따라 할 수 있게 다시 설명하겠습니다.
다운로드한 파일을 압축 해제합니다.
엑셀을 실행하여 Visual Basic 화면을 띄웁니다. (Alt+F11)
파일 > 파일 가져오기를 선택합니다.
압축 해제 한 파일 중 JsonConverter.bas 파일을 가져옵니다.
해당 파일을 제대로 불러왔으면 아래 이미지가 추가됩니다.
그다음 레퍼런스를 추가해야 합니다.
도구 > 참고 > Microsoft Scripting Runtime을 체크해주세요
그 이후 이제 새로운 모듈을 하나 추가합니다.
앞서 작성했던 업비트의 값으로 한번 파싱이 제대로 되는지 확인해보겠습니다.
테스트 예시
[{"currency":"KRW", "balance":"1000000.0", "locked":"0.0", "avg_buy_price":"0", "avg_buy_price_modified":false, "unit_currency":"KRW"}, {"currency":"BTC", "balance":"2.0", "locked":"0.0", "avg_buy_price":"101000", "avg_buy_price_modified":false, "unit_currency":"KRW"}]
이러한 텍스트가 있습니다.
이것을 엑셀 시트 a1에 작성해서 넣습니다.
이렇게 말이죠
그다음에 Visual Basic 편집기에서 아래 코드와 동일하게 작성합니다.
Module 1에 이렇게 코드가 있어야 합니다.
아래 코드를 복, 붙 하시면 됩니다.
Sub ParTest()
Dim TestText As Object
Dim ParseType As Dictionary
Set TestText = JsonConverter.ParseJson(Range("a1")) 'Range("a1")은 텍스트 값입니다.
For Each ParseType In TestText
DetailCnt = ParseType.Count '세부 항목 개수
colcnt = colcnt + 2
rcnt = 1
For i = 0 To DetailCnt - 1
DetailKey = ParseType.Keys(i) '항목이름
DetailValue = ParseType.Items(i) '항목값
rcnt = rcnt + 1
Cells(rcnt + 1, colcnt + 1).Resize(1, 2) = Array(DetailKey, DetailValue)
Next
Next
End Sub
여기서 중요한 것은
Keys(i) : 항목 이름 노출
Items(i) : 해당 항목 값
이 노출되는 것입니다.
엑셀에 노출하는 규칙은 맞게 수정하셔야 합니다.
지금 코드대로 한다면
이렇게 표시됩니다.
위에 작성했던 이미지와 참고하면
동일하게 정리되어 나타나는 것을 알 수 있습니다.
이렇게 하여 업비트 또는 다양한 json의 값을 파싱 해서 엑셀에 노출할 수 있습니다.
'코인 > 업비트API' 카테고리의 다른 글
업비트 거래 수수료 절약하기 API 연결 후 예약주문 프로그램 (0) | 2021.06.28 |
---|---|
VBA에서 regexmatch(정규식) 를 이용한 코인 거래소 API 파싱하기 (0) | 2021.06.17 |
엑셀 업비트 API 실시간 캔들값 엑셀 파일 자동 갱신 - VBA (23) | 2021.05.12 |
엑셀로 업비트 코인 거래하기 업비트 API 적용 - VBA (18) | 2021.05.04 |
VBA 일정 시간 간격으로 업비트 코인가격 갱신하기 (0) | 2021.05.02 |
댓글