Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

XPRIM_RandomAccessJsonReader を使って、自身の JSON データのどの部分でも読み込むことが可能です。これは名前またはインデックスで参照できます。
XPRIM_JsonReader は速度が速く、前方向専用のリーダーです。テープ上のデータを読むのと同じ手法で JSON データを読み込みます。
JSON データは順番に読み込まれますので、JSON データの異なる領域に直接アクセスすることはできません。(データベース・サービスから戻されたデータなどの) 大きな JSON データを読み込む場合、XPRIM_JsonReader を利用するようにしてください。
(XPRIM_RandomAccessJsonReader が使用するメモリ量は JSON データのサイズに相関することに対して) これはメモリ使用量が非常に少ないです。
多くの場合、 XPRIM_JsonReader に対して XPRIM_RandomAccessJsonReader を選択するのが、使いやすいでしょう。JSON データが非常に大きい場合を除き、常に XPRIM_RandomAccessJsonReader を利用するようにしてください。

例 - 応答本文を JSON として読み込む

Google マップのジオコーディング要求を実行すると、次のような応答を受け取ります。

...

     Define_Com Class(#XPRIM_HttpRequest) Name(#Req)
Define_Com Class(#XPRIM_RandomAccessJsonReader) Name(#Reader)
...
#Req.DoGet Url('https://maps.googleapis.com/maps/api/geocode/json?...')

* 要求が正しく実行されたか確認

     If (#Req.Response.IsSuccessHttpStatusCode)

    * 応答のJSON リーダー・ソースを HTTP 要求から設定

       #Reader.SetSourceHttpResponse HttpResponse(#Req.Response)

    *  ('lat' と 'lng' 値が含まれている) 'location' オブジェクトにナビゲート

    * ナビゲーション・パスを指定して、'location' エレメントへナビゲート

    * パスの名前とインデックスはスラッシュで区切る

       #Reader.BeginObjectWithPath Path('results/1/geometry/location')

    * 緯度と経度の値を取得

       #Latitude := #Reader.ReadNumberWithName('lat')
  #Longitude := #Reader.ReadNumberWithName('lng')

    *  "BeginObject" を "EndObject" で終了

       #Reader.EndObject
Endif


次は:無効な応答を確認