9
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBA で JSON 変換する cJobject ライブラリ

Posted at

#cJobject について
VBA で JSON を扱う場合、ほとんど ScriptControl か JSONLib を使っているようです。
ただ、制約があったり機能が少ないなどあまり使い勝手はよくないです。
cJobject も json 変換出来るライブラリですが、日本で紹介されたサイトが見当たりませんので、ご紹介します。

Kintone レポートツールで使用したライブラリですが、これをベースに kintone 用ライブラリを作成して使用しています。
検索やソート、クローン機能などもあるようですが試していません。
もう少し日本でも使用例が増えて、情報が集まってくれるとうれしいです。

cJobject は、Desktop Liberation で公開されている巨大なライブラリの一部です。
データ関連について、あまりにも機能が多すぎて、json 関連の機能があることが埋没してしまっています。
また、巨大ライブラリの一部ということで、クラス、標準モジュールなどソースが分散しているのが、少し使いにくい点です。
最初に使ったときは、よくわからず巨大ライブラリから必要な機能を切り出して使いました。

#ダウンロード
cJobject の機能を手っ取り早く試すには、下記からexcel ファイルをダウンロードします。
ダウンロードページ で、Data Manipulation を展開すると、最後にvanillacJobject.xlsm があります。

vanillacJobject.xlsm ファイル
image

json 変換のコード例

Private Function getMoreData() As cJobject
    
    ' just get some vanilla json data
    Set getMoreData = JSONParse("[" & _
            "{'name':'john', 'demographics':{'age':25,'sex':'male'}}," & _
            "{'name':'mary', 'demographics':{'age':50,'sex':'female'}}" & _
        "]")

End Function
' simple test
Private Sub showData()
    Dim job As cJobject, jo As cJobject, jp As cJobject, jm As cJobject
    
    Set job = getMoreData()
    
    ' stringify
    Debug.Print job.stringify

vba のデバッグ実行で、json オブジェクトを階層で表示できます。
image

使い方などは、そのうち少しづつでも紹介できればと思います。

9
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?