VBA-JSON으로 JSON 문자열을 만들어보세요!
소개
VBA에서 WebAPI를 사용할 때, 데이터 취득(GET) 처리에서는 이 기사 과 같이 JSON 퍼스의 정보가 비교적 많이 공개되고 있었지만, 데이터의 송신(POST라든지)시에 사용하는 Excel 데이터⇒JSON 데이터 작성 방법을 찾지 못했기 때문에 메모입니다.
VBA-JSON의 도입 방법등등은 상기 링크등이나, Git의 ReadMe 봐 주세요.
Json 데이터 작성 개요
VBA-JSON에서 Json 데이터를 생성하려면 "JsonConverter.ConvertToJson"을 사용하십시오. 이 함수는 인수에 Dictionary 배열을 취하고 반환 값은 String 유형입니다.
WebAPI에서는 싹둑 말하면 이 반환값을 건네주면 OK입니다!
Deictionary 배열의 Key와 value가 JSON의 Key와 Value에 대응하고, 복수의 Key와 Value를 Dictionary 배열에 건네주면, 각각이 JSON의 멤버로서 출력됩니다.
샘플
단일 행
다음과 같이 3열 1행의 테이블을 전제로 합니다.
그 경우에는 아래의 코드와 같이 Dictionary 배열에 Key와 Value를 넣어 JsonConverter.ConvertToJson에 건네주면 ...
sample.bas
Dim buf As New Dictionary
'Key項目だけでLoop
For Each Item In Range("A1:C1")
'値はOffsetで取得
Call buf.Add(Item.Value, Item.Offset(1, 0).Value)
Next
'Json型文字列取得と結果表示
MsgBox JsonConverter.ConvertToJson(buf)
다음과 같이 JSON 데이터가 생성됩니다.
WebAPI의 Payload로도 사용할 수 있을 것 같네요.
여러 줄
여러 줄의 경우에는 상당히 까다로워집니다.
복수행의 경우에는 각 행을 Dictionary로 표현하면서, 그것들을 일단 Collection형 배열에 격납합니다. 또한 JsonConverter에 전달하기 위해 Dictionary 배열의 요소에 저장합니다.
sample2.bas
Dim buf As New Dictionary
Dim bufColl As New Collection
'行ループ
For i = 1 To 2
'Key項目だけでLoop 列ループ
For Each Item In Range("A1:C1")
'値はOffsetで取得
Call buf.Add(Item.Value, Item.Offset(i, 0).Value)
Next
'DictionaryをCollectionに格納
Call bufColl.Add(buf)
'次ループに備えDictionary初期化。これをしないとKey重複エラーになる
Set buf = Nothing
Set buf = New Dictionary
Next i
'CollectionをDictionaryに格納
Call buf.Add("items", bufColl)
'Json型文字列取得
MsgBox JsonConverter.ConvertToJson(buf)
배열로 출력되었습니다.
Collection을 사용하면 부모가 1이고 자식 요소가 N인 경우에도 사용할 수 있으며, 그 계층은 몇 개라도 깊게 할 수 있습니다.
요약
꽤 쉽게 Excel에서 JSON 데이터를 만들 수 있습니다.
여러 행을 배열로 만들고 싶을 때만 Collection을 사용하십시오.
Reference
이 문제에 관하여(VBA-JSON으로 JSON 문자열을 만들어보세요!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tk825/items/61d7d77d71c055068d25텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)