2021/12/02

JSON へ Append するメソッド

LotusScript の NotesJSONNavigator クラスをはじめとした JSON を扱うクラスに、いちから JSON を作れるメソッドが追加されていることはなんとなく知っていたのですが、使ったことがありませんでした。

AppendObject, AppendArray, AppendElement といったメソッドを駆使して JSON の編集が可能になったのです。

今回は何もないところから次のようなJSONを作ってみたいと思います。

{
  "Mixed Nuts":[
    {
      "Name": "カシューナッツ",
      "Qty": 5
    },
    {
      "Name": "アーモンド",
      "Qty": 3
    },
    {
      "Name": "ピスタチオ"
      "Qty": 2
    },
    {
      "Name": "マカダミアナッツ"
      "Qty": 1
    }
  ]
}


まずは CreateJSONNavigator メソッドで NotesJSONNavigator オブジェクトを作ります。最も外側の括弧が{}ですので、パラメータを "" としてルート・エレメントに NotesJSONObject オブジェクトを作ります。

次に Mixed Nuts という名前を付けた配列を AppendArray メソッドで NotesJSONNavigator オブジェクトへ追加します。

この配列に AppendObject メソッドで4つの NotesJSONObject オブジェクトを追加していきます。

それぞれのオブジェクトには Name と Qty という2つのエレメントを AppendElement メソッドで追加します。

これをコードにしたのが以下です。

	Dim ss As New NotesSession
	Dim nav As NotesJSONNavigator
	Dim arr As NotesJSONArray
	Dim obj As NotesJSONObject
	Dim elm As NotesJSONElement
	
	Set nav = ss.CreateJSONNavigator("")
	Set arr = nav.AppendArray( "Mixed Nuts" )
	
	Set obj = arr.AppendObject()
	Set elm = obj.AppendElement( "カシューナッツ", "Name" )
	Set elm = obj.AppendElement( 5, "Qty" )
	
	Set obj = arr.AppendObject()
	Set elm = obj.AppendElement( "アーモンド", "Name" )
	Set elm = obj.AppendElement( 3, "Qty" )
	
	Set obj = arr.AppendObject()
	Set elm = obj.AppendElement( "ピスタチオ", "Name" )
	Set elm = obj.AppendElement( 2, "Qty" )
	
	Set obj = arr.AppendObject()
	Set elm = obj.AppendElement( "マカダミアナッツ", "Name" )
	Set elm = obj.AppendElement( 1, "Qty" )
	
	Print nav.Stringify

最後の行にある Stringify は、JSONデータの文字列表現を作成するメソッドです。

気を付けたいのは、AppendElement メソッドのパラメータです。パラメータにエレメントの名前と値を指定するのですが、1つ目に値、2つ目に名前を指定します。違和感あるなあ...

それからオンラインヘルプには、CreateJSONNavigator メソッドでパラメータ無し () の例が示されていますが、実際にはエラーになって保存できませんでした。※バージョン 12.0.0 で確認しました


0 件のコメント:

コメントを投稿