NotesJSONNavigator (LotusScript)

JSON データを解析するために使用される LotusScript クラスです。

包含関係

包含元: NotesSession

プロパティ

PreferUTF8 プロパティ
文字列内に NULL が埋め込まれている場合、Unicode文字列出力を上書きします。

メソッド

GetElementByName メソッド

名前で NotesJSONElement を取得します。

GetElementByPointer メソッド
要素を識別するために JSON Pointer 構文を使用して NotesJSONElement を取得します。

GetFirstElement メソッド
JSON文字列の最初の要素を取得します。

GetNextElement メソッド
JSON 文字列の次の要素を取得します。

GetNthElement メソッド
JSON 文字列から指定されたインデックスの要素を取得します。

Stringify メソッド
NotesJSONNavigator に含まれる JSON データの文字列表現を作成します。

AppendElement メソッド
NotesJSONElement を NotesJSONNavigator に追加します。

AppendArray メソッド
NotesJSONArray を NotesJSONavigator に追加します。

AppendObject メソッド
NotesJSONNavigator に NotesJSONObject を追加します。

作成方法

新しい NotesJSONNavigator オブジェクトを作成するには、createNotesJSONNavigator を使用します。

利用可能なオプションは、入力なし、文字列、または NotesStreamです。

入力なし:

Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
Set jsonNav = session.Createjsonnavigator("")
String 型の文字列:
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
set jsonNav = session.CreateJSONNavigator("")
NotesStream 型のオブジェクト:
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
set jsonNav = session.CreateJSONNavigator(NotesStream)
注:NotesJSONNavigator を作成するときにストリームをオープンする必要があります。ナビゲータが作成されたら、すぐにストリームを閉じることができます。UTF-8 データのみサポートされています。

構文

次の例では指定された JSON 文字列で NotesJSONNavigato rを作成します。
Dim jsnav As NotesJSONNavigator 
Set jsnav = session.CreateJSONNavigator(|{"test":"A string"}|)
デフォルトでは、NotesJSONNavigator はルート要素として JSON オブジェクトを表します。ルート要素のタイプを JSON 配列に設定するには、次のようにNotesJSONNavigatorを作成します。
Dim jsnav as NotesJSONNavigator 
Set jsnav = session.CreateJSONNavigator("[]") 

以下のコードは、NotesJSONNavigator クラスを使用して JSON オブジェクトを作成し操作する方法と、JSON オブジェクト内をナビゲートして特定の要素を取得する方法の例になります。

例-1:

Option Public
Option Declare

Sub Initialize
End Sub

%REM
Sub SampleAppend
Description: creates this JSON object:
{
"variable1" : "value1",
"variable2" : "value2",
"numericVariable", 123
}
%END REM
Sub SampleAppendElement()
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator

'# create empty navigator object
Set jsonNav = session.Createjsonnavigator("")

'# append name/value pairs
Call jsonNav.appendElement("value1", "variable1")
Call jsonNav.appendElement("value2", "variable2" )
Call jsonNav.appendElement(123, "numericVariable" )

'# return entire object as string
Print jsonNav.Stringify(), 0, "JSON Object"

End Sub 

例-2:

%REM
Sub SampleAppendObject
Description: creates this JSON object:
{
"variable1" : "value1",
"variable2" : "value2",
"myarray" : ["An","array","of","strings"],
"myobject" : {
"property1" : "yourValue1"
}
}
%END REM
Sub SampleAppendObject()
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
Dim arr As NotesJSONArray
Dim obj As NotesJSONObject

'# create empty navigator object
Set jsonNav = session.Createjsonnavigator("")

'# append name/value pairs
Call jsonNav.appendElement("value1", "variable1")
Call jsonNav.appendElement("value2", "variable2" )
Call jsonNav.appendElement(123, "numericVariable" )

'# append array named 'myarray' with string elements
Set arr = jsonNav.appendArray("myarray")
Call arr.appendElement("An")
Call arr.appendElement("array")
Call arr.appendElement("of")
Call arr.appendElement("strings")

'# append object named 'myobject' containing a property and a value
Set obj = jsonNav.appendObject("myobject")
Call obj.appendElement("yourValue1", "property1")

'# return entire object as string
MsgBox jsonNav.Stringify(), 0, "JSON Object"
End Sub

例-3:

%REM
Sub SampleAppendArray
Description: creates this JSON object:
{
"variable1" : "value1",
"variable2" : "value2",
"numericVariable", 123
"myarray" : ["An","array","of","strings"]
}
%END REM
Sub SampleAppendArray()
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
Dim arr As NotesJSONArray

'# create empty navigator object
Set jsonNav = session.Createjsonnavigator("")

'# append name/value pairs
Call jsonNav.appendElement("value1", "variable1")
Call jsonNav.appendElement("value2", "variable2" )
Call jsonNav.appendElement(123, "numericVariable" )

'# append array named 'myarray' with string elements
Set arr = jsonNav.appendArray("myarray")
Call arr.appendElement("An")
Call arr.appendElement("array")
Call arr.appendElement("of")
Call arr.appendElement("strings")

'# return entire object as string
MsgBox jsonNav.Stringify(), 0, "JSON Object"
End Sub
例-4:
%REM
Sub SampleJSONNav
Description: navigates within this JSON object
{
"variable1" : "value1",
"variable2" : "value2",
"myarray" : ["An","array","of","strings"],
"myobject" : {
"property1" : "yourValue1"
}
}
%END REM
Sub SampleJSONNav ()
Dim session As New NotesSession
Dim jsonNav As NotesJSONNavigator
Dim el As NotesJSONElement

Const testJSON$ = |
{
"variable1" : "value1",
"variable2" : "value2",
"myarray" : ["An","array","of","strings"],
"myobject" : {
"property1" : "yourValue1"
}
}
|
'# create navigator object based on the test JSON object declared before
Set jsonNav = session.Createjsonnavigator(testJSON$)

'# Search element by name
Set el = jsonNav.GetElementByName ("variable2")
MsgBox el.Value, 0, "Result of GetElementByName" '# should display 'value2'

'# Search/Get elements in JSON object:
Set el = jsonNav.GetNthElement(2)
MsgBox el.Value, 0, "Result of GetNthElement(2)" '# should display 'value2'

Set el = jsonNav.GetElementByPointer("/myobject/property1")
'# will return 'yourValue1'
MsgBox el.Value, 0, "Result of GetElementByPointer" '# should display 'yourValue1'

End Sub

 

 


PreferUTF8 プロパティ

文字列内に NULL が埋め込まれている場合、Unicode 文字列出力を上書きします。

 

 


GetElementByName メソッド

NotesJSONElement を名前によって取得します。

構文

Set el = jsnav.GetElementByName(name)

パラメータ

name

String。取得する要素の名前。

戻り値

name パラメータに一致する NotesJSONElement を返します。

JSONElement が見つからない場合は、次のエラーが発生します。

4843 - JSON Element not found

Dim jsnav As NotesJSONNavigator 
Set jsnav = session.CreateJSONNavigator(|{"test":"A string"}|) 
Set el = jsnav.GetElementByName("test")

 

 


GetElementByPointer メソッド

JSON ポインタ構文を使用して NotesJSONElement を取得します。

構文

Set el = jsnav.GetElementByPointer(pointer)

パラメータ

pointer

String

目的の要素を識別する JSON ポインタの文字列。

戻り値

JSON ポインタに対応する NotesJSONElement を返します。

次のコードは、名前 test と値 "A string" の要素を返します。
Dim jsnav As NotesJSONNavigator 
Set jsnav = session.CreateJSONNavigator(|{"test":"A string"}|) 
Set el = jsnav.GetElementByPointer("/test")




GetFirstElement メソッド

JSON 文字列内の最初の要素を取得します。

構文

Set el = jsnav.GetFirstElement()

パラメータ

なし

戻り値

JSON 文字列の最初の要素に対応する NotesJSONElement を返します。

次のコードは、名前が "element1" で値が "A string" の要素を返します。
Dim jsnav As NotesJSONNavigator 

Set jsnav = s.CreateJSONNavigator( 
|{ "element1" : "A string", "element2" : "Another string" }|) 

Set el = jsnav.GetFirstElement()

 

 


GetNextElement メソッド

JSON 文字列内の次の要素を取得します。

構文

Set el = jsnav.GetNextElement ()

パラメータ

なし

戻り値

JSON 文字列の次の要素に対応する NotesJSONElement を返します。

次のコードは、名前が "element2" で値が "Another string" の要素を返します。
Dim jsnav As NotesJSONNavigator 

Set jsnav = s.CreateJSONNavigator( 
|{ "element1" : "A string", "element2" : "Another string" }|) 

Set el = jsnav.GetFirstElement() 

Set el = jsnav.GetNextElement() 

 

 


GetNthElement メソッド

指定されたインデックスで表される JSON 文字列から要素を取得します。

構文

Set el = jsnav.GetNthElement(index)

パラメータ

index

Integer。要素を識別するためのインデックス。

戻り値

JSON 文字列の指定された番号の要素に対応する NotesJSONElement を返します。

次のコードは、名前が "element2" で値が "Another string" の要素を返します。
Dim jsnav As NotesJSONNavigator
	
Set jsnav = s.CreateJSONNavigator(
|{ "element1" : "A string", "element2" : "Another string", "element3 ": "Third string" }|)	

Set el = jsnav.GetNthElement(2)

 

 


Stringify メソッド

NotesJSONNavigator に含まれる JSON データの文字列表現を作成します。

構文

jsonstring = jsnav.stringify

パラメータ

なし

戻り値

NotesJSONNavigator が保持している JSON データの文字列表現を返します。

例1

Dim session As New NotesSession()
Dim nav As NotesJSONNavigator
Dim el As NotesJSONElement	
Dim resultStr As String
Set nav = session.Createjsonnavigator("")
Set el = nav.appendElement("stringval", "stringproperty")

ResultStr = nav.stringify

 

 


AppendElement メソッド

NotesJSONElement を NotesJSONNavigator に追加します。

パラメータ

value

Variant。NotesJSONNavigator に追加する値。許可される型は、String、Integer、Long、 Double、Boolean。

name

String。オプション。要素の名前。JSON ナビゲーターのルート型が配列のとき、name は使用されません。NotesJSONNavigator の AppendArray を参照してください。

戻り値

NotesJSONNavigator に追加された NotesJSONElement を返します。

Dim jsnav As NotesJSONNavigator
Dim el As NotesJSONElement
Set jsnav = session.createJSONNavigator("")
Set el = jsnav.appendElement(3, "newvalue")

Result: { "newvalue", 3 }

 

 


AppendArray メソッド

NotesJSONArray を NotesJSONavigator に追加します。

パラメータ

name

String。オプション。配列の名前。

戻り値

NotesJSONNavigator に追加された NotesJSONArray を返します。

例1

配列を作成し、4 つの文字列を追加します。
Dim jsnav As NotesJSONNavigator
Dim arr As NotesJSONArray
Set arr = jsnav.appendArray()
Call jsnav.appendElement("An")
Call jsnav.appendElement("array")
Call jsnav.appendElement("of")
Call jsnav.appendElement("strings")

Result:  ["An","array","of","strings"]

例2

NotesJSONNavigatorに「myarray」という名前の 4 つの文字列の配列を追加します。
Dim jsnav As NotesJSONNavigator
Set jsnav = session.createJSONNavigator("")
Dim arr As NotesJSONArray
Set arr = jsnav.appendArray("myarray")
Call arr.appendElement("An")
Call arr.appendElement("array")
Call arr.appendElement("of")
Call arr.appendElement("strings")

Result: {"myarray":["An","array","of","strings"]}

 

 


AppendObject メソッド

NotesJSONObject を NotesJSONNavigator に追加します。

パラメータ

name

String。オブジェクトの名前。

戻り値

NotesJSONNavigator に追加された NotesJSONObject を返します。

NotesJSONNavigatorに「myobject」という名前のオブジェクトを追加します。
Dim jsnav As NotesJSONNavigator
Set jsnav = session.createJSONNavigator("")
Dim obj As NotesJSONObject
Set obj = jsnav.appendObject("myobject")
' Note arguments are element value, element name
Call obj.appendElement("string value", "prop1")
Call logOutput("appendObjectExample", jsnav)

Result: {"myobject":{"prop1":"string value"}}