ActiveReports for .NET 18.0J
JSON
ActiveReportsユーザーガイド > 概念 > ページレポート/RDLレポートの概念 > データソースとデータセット > [レポートデータソース]ダイアログ > JSON

このトピックでは、ページレポートまたはRDLレポートをJSONデータソースに接続する方法について説明します。JSONデータソースに接続するには、[新規レポート]ダイアログ(新しいレポートを作成する場合)または[レポートデータソース]ダイアログ(レポートエクスプローラの場合)を使用できます。

[新規レポート]ダイアログを使用してJSONデータ ソースに接続する

  1. デザイナアプリにて、[新規作成]をクリックします。
  2. [新規レポート]ダイアログでは、[RDLレポート]を選択し、[次へ]をクリックします。
    Choose a Report Type from New Report Dialog
  3. [新規RDLレポート] > [データソース種類の選択]では、[JSON]を選択し、[次へ]をクリックします。
    Select the Data Source Type as JSON
  4. JSONファイルのパスを指定するには、[開く]ボタンをクリックし、目的のファイル(たとえば、C:\Data\customer.json)に移動します。
    Specify JSON file path
  5. パラメータを指定するには、[開く]ボタンの右側にある[パラメータ]をクリックして、[パラメータ]ダイアログを開きます。[追加]ボタンをクリックして新しいパラメータを追加するか、既存のパラメータを選択して、以下のプロパティを指定します。
    • 名前:パラメータの名前を指定します。
    • :ドロップダウンリストから値の型を選択します。(デフォルト値はString)
    • テスト値:接続プロパティの実行時の値を指定します。
    • 入力ソース:非表示でないパラメータの場合は[対話]を選択し、非表示パラメータの場合は[プログラム]を選択します。
      Parameters Dialog

  6. [次へ]をクリックし、有効なクエリを追加してデータセットを構成します。[パス]セクションのツリー・ノードを選択して、パスを生成します。結果のクエリが[クエリ]フィールドに表示されます。
    Configure the dataset by adding a valid query
  7. [次へ]をクリックします。レポートウィザードの最後の画面で、レポートの概要を確認し、[作成]をクリックすると、JSONデータソースを含むレポートが正常に追加されます。
    Review and confirm report summary

    [レポートデータソース]ダイアログを使用してJSONデータ ソースに接続する

    1. [レポートエクスプローラ]で、[データソース]ノードを右クリックして[データソースを追加する]を選択するか、[追加](+)ボタンをクリックして[データソース]を選択します。
    2. 表示される[レポートデータソース]ダイアログで、[全般]ページを選択し、データソースの名前を入力します(デフォルトでは「DataSource1」)。この名前は[データソース]ノードの子ノードとして[レポートエクスプローラ]に表示されます。
    3. [種類]フィールドで、「Json Provider」を選択します。
      JSON Provider Data Source
    4. [コンテンツ]タブで、JSONデータの形式の選択を「外部ファイルまたはURL」に設定します。
    5. [ファイル/URLの選択または入力]フィールドに「https://demodata.mescius.jp/northwind/odata/v1/Orders」と入力します。

      [接続文字列]タブには、次のように生成された接続文字列が表示されます。

      jsondoc=https://demodata.mescius.jp/northwind/odata/v1/Orders

      詳細については、「JSONデータソースの設定プロパティ」を参照してください。
    6. [データソースを確認]アイコンValidate Icon in Report Data Source Dialog Boxをクリックし、接続文字列を検証します。
    7. [OK]ボタンをクリックしてダイアログを閉じます。

    JSONデータソースの設定プロパティ

    JSONデータプロバイダは、[レポートデータソース]ダイアログ内の[接続]セクションで以下のオプションをサポートしています。

    コンテンツ

    [コンテンツ]タブでは、JSONデータソースの形式を指定します。指定に使用可能なオプションは次のとおりです。

    • 外部ファイルまたはURL: JSONスキーマの外部ファイルのパス、またはURLを入力するか、ドロップダウンからレポートが配置されているのと同じフォルダに存在するJSONファイルを選択します。このオプションを使用して作成された接続文字列はjsondocで開始します。
    • 埋め込み: レポートに埋め込むJSONデータファイルのパスを入力します。データは手動で入力するか、選択したJSONファイル内で編集することができます。このオプションを使用して作成する接続文字列は、jsondataで開始します。
    • : 実行時にJSONデータにバインドするための式を入力します。

    スキーマ

    [スキーマ]タブでは、JSONスキーマを指定するうえで使用可能なオプションは次のとおりです。

    • 自動生成:デフォルトのオプションであり、スキーマを自動的に生成します。
    • 外部ファイルまたはURL: JSONスキーマの外部ファイルのパス、またはURLを入力するか、ドロップダウンからレポートが配置されているのと同じフォルダに存在するJSONファイルを選択します。このオプションを使用して作成された接続文字列は schemadocで開始します。
    • 埋め込み: レポートに埋め込むJSONスキーマファイルのパスを入力します。手動でスキーマを入力するか、選択したJSONファイル内でスキーマを編集することができます。このオプションを使用して作成された接続文字列は schemadataで始まります。

      JSONスキーマについては、http://jsonschema.net/#/などのJSONスキーマジェネレータを使用して自動生成することができます。

    JSONデータプロバイダはJSONスキーマを使用してフィールドを取得します。JSONスキーマはJSONデータの構造を表します。JSONスキーマの詳細については、http://json-schema.org/latest/json-schema-core.htmlを参照してください。
    JSONスキーマのキーワードは以下のとおりです。

    • 型(types): JSONスキーマの要素の型を定義します。型の詳細については、こちら(英語サイト)を参照してください。
         
    • プロパティ(properties): オブジェクト型のJSONスキーマ要素のプロパティコレクションを定義します。プロパティの詳細については、こちら(英語サイト)を参照してください。
         
    • 項目(items): JSONスキーマ要素の配列型の項目の定義を表します。1つだけの値がサポートされます。
      たとえば、"items" : [ {...}, {...}, {...} ]は複数の値を含んでいるため、サポートされません。項目の詳細については、こちら(英語サイト)を参照してください。
         
    • 定義(definitions): $refを含んでいる他のJSONスキーマ要素に使用する個別の定義を定義しています。定義の詳細については、こちら(英語サイト)を参照してください。
         
    • $ref: オブジェクト型のJSONスキーマ要素の定義への参照を定義します。サポートされているのは、定義({ $ref : #/definitions/... })の参照だけです。

    接続文字列

    [接続文字列]タブには、[コンテンツ]と[スキーマ]タブで定義された設定に基づいてJSON接続文字列が表示されます。

    • [外部ファイルまたはURL]オプションを選択した場合、接続文字列は次のようになります。
      jsondoc=C:\customers.json
      or
      jsondoc=https://demodata.mescius.jp/northwind/odata/v1/Orders
    • [埋め込み]オプションを選択した場合、接続文字列は次のようになります。
      接続文字列
      コードのコピー
      jsondata={"Customers":[{"Id":"ALFKI", "CompanyName":"Alfreds Futterkiste", "Country":"Germany"}, {"Id":"ANATR", "CompanyName":"Ana Trujillo Emparedados y helados", "Country":"Mexico"}], "ResponseStatus":{}}
      
    • [式]オプションを選択した場合、接続文字列は次のようになります。        
      接続文字列
      コードのコピー
      ="jsondata={ 'Name': 'Name'};schemadata={ '$schema': 'http://json-schema.org/draft-04/schema#', 'definitions': {}, 'id': 'http://example.com/example.json', 'properties': { 'Name': { 'id': '/properties/Name', 'type': 'string' } }, 'type': 'object'}"
      
      注意:接続文字列に式を含める場合は、jsondocまたはjsondataおよびschemadocまたはschemadataで二重引用符(")の代わりに、単一引用符(')を使用してください。

      たとえば、次の接続文字列は無効です。

      接続文字列(無効)
      コードのコピー
      ="jsondata={ "Name": "Name"};schemadata={ "$schema": "http://json-schema.org/draft-04/schema#", "definitions": {}, "id": "http://example.com/example.json", "properties": { "Name": { "id": "/properties/Name", "type": "string" } }, "type": "object"}"
      

    接続文字列の作成

    [レポートデータソース - 全般]ダイアログで、[接続文字列]タブの[作成]ボタンを使用して、JSONデータソースの接続文字列を作成できます。これにより、指定されたHTTPメソッド(GET、POST)およびその他のリクエストオプションを使用して、外部URLからJSONデータを取得できます。[作成]ボタンをクリックすると、[JSONデータソースの設定]ダイアログが開かれ、URI/パス、HTTPヘッダ、HTTPメソッド(GET、POST)、POST内容のパラメータを使用してJSON接続文字列を作成できます。


    JSONデータを含む外部URLに接続するには、次の設定を構成する必要があります。

    URI/パス:

    サービスルートURI、リソースパス、およびクエリオプションで構成されるリクエストのURLまたはエンドポイント。データソースのエンドポイントで提供されるjsonのフィールドは、データセットの設定に応じて抽出されます。たとえば、IPアドレス(例:http://10.64.2.17:51980/admin)またはマシン名(例:http://in-esxi-w10v17:8080/)を含むURLが有効です。

    メモ:URI/パスに有効なURLを指定する必要があります。そうでない場合は検証できません。

    HTTPヘッダ

    リクエストまたはレスポンスに関連する追加情報が含まれます。HTTPヘッダには、接続を確立するために必要な、予想されるコンテンツタイプを指定します。たとえば、データを取得するためにサービス/URIにログインするための資格情報を提供します。また、ヘッダと値のペアを追加できます。リクエスト本文をJSON形式で送信するために、このパラメータを設定する必要があります。

    以下は、ヘッダと値のペアの例です。

    • Content-Type, application-json(リクエスト本文をJSON形式で送信するため)

    • Accept, application-json(目的の形式でレスポンスを読み取るため)

    HTTPメソッド

    HTTPリクエストメソッド。GET(URLに含まれる)またはPOST(リクエスト本文に含まれる)のいずれかに設定できます。

    • GET:指定されたリソースからデータを要求します。GETメソッドの例は、「接続文字列とデータセットクエリの例」セクションに示されています。
    • POST:POSTリクエストを使用すると、データを取得するための式として本文を定義できます。

    POST内容

    POSTリクエストメソッドの本文。このテキスト領域は、HTTPメソッドがPOSTに設定されている場合にのみ有効になります。POSTメソッドで接続文字列を正常に処理するには、構成設定の有効な組み合わせを指定する必要があります。URL、ヘッダの名前、ヘッダ値、およびPOST内容の有効な組み合わせが指定される場合、接続文字列を保存して検証できます。有効な組み合わせが指定された場合にのみ、データソースに基づいてデータセットを作成できます。

    無効なURL、無効なヘッダ名またはヘッダ値、無効なPOST内容、またはこれらの設定の無効な組み合わせを入力すると、接続文字列の検証中にエラーメッセージが表示されます。

    接続文字列とデータセットクエリの例

    1. 単純な接続文字列とデータセットクエリを使用する

    接続文字列
    コードのコピー
    jsondoc=https://demodata.mescius.jp/northwind/api/v1/Categories
    
    データセットクエリ
    コードのコピー
    $.[*]
    

     

    要求されたURIのデータの形式をJSONに変換するには、次の接続文字列に示すように、$formatクエリまたはHttpヘッダのいずれかを使用します。

    • $formatクエリ
    接続文字列
    コードのコピー
    jsondoc=https://services.odata.org/v3/northwind/northwind.svc/Invoices?$format=json
    
    • Httpヘッダ
    接続文字列
    コードのコピー
    headers={"Accept":"application/json"};jsondoc=https://services.odata.org/v3/northwind/northwind.svc/Invoices
    
    データセットクエリ
    コードのコピー
    $.value[*]
    

    2. クエリパラメータを使用して特定のフィールドを抽出する

    接続文字列
    コードのコピー
    headers={"Accept":"application/json"};jsondoc=https://services.odata.org/v3/northwind/northwind.svc/Invoices?$select=ShipName,ShipRegion
    
    データセットクエリ
    コードのコピー
    $.value[*]
    

    3. パラメータを使用してデータベースフィールドをフィルタする

    接続文字列
    コードのコピー
    headers={"Accept":"application/json"};jsondoc=https://services.odata.org/v3/northwind/northwind.svc/Invoices?$filter=ShipName eq 'Alfreds%20Futterkiste'
    
    データセットクエリ
    コードのコピー
    $.value[*]