Read…WithPath メソッドを使って、パスでによって JSON データ内の位置が指定された値を読み込みます。パスは、スラッシュで区切られた一連のメンバ名、アレイ・インデックスです。
例えば、前回の例にあった以下の JSON 文字列を使うとします。
{
"name":
{
"given":"John",
"surname":"Smith"
}, ...
"given" のメンバ値 (John) へのパスは、"name/given".となります。
さらに前回の例から次の JSON 文字列を使用します。
{
...
"contactNo":
[
{ area:"02", no:"9378 2867", type:"landline" },
{ no:"0468 732 371", type:"mobile" }
]
最初の連絡先 (contact number) の市外局番 (area) へのパスは "contactNo/1/area" です。
インデックスは常に1 がベースなることに注意してください。これは RDML の基準です。
それでは実際にメソッドを使用してみましょう。
"given" と "surname" のメンバ値の取得は以下のようになります。
#GivenName := #Reader.ReadStringWithPath("name/given")
#Surname := #Reader.ReadStringWithPath("name/surname")
"name" オブジェクトを開いて入ることもできます。こうすれば、パスで "name" のセグメントを繰り返す必要がありません。
#Reader.BeginObjectWithPath("name")
#GivenName := #Reader.ReadStringWithPath("given")
#Surname := #Reader.ReadStringWithPath("surname")
#Reader.EndObject
以下のように、最初の連絡先から連絡先のタイプを取得できます。
#ContactNoType := #Reader.ReadStringWithPath("contactNo/1/type")
もしくは、最初に "contactNo" の最初のエレメントにナビゲートし、次に "type" の値を取得することもできます。
#Reader.BeginObjectWithPath("contactNo/1")
#ContactNoType := #Reader.ReadStringWithPath("type")
#Reader.EndObject
次は: Read…WithName メソッド