PowerApps の JSON 関数JSON function in PowerApps

テーブル、レコード、または値の JSON テキスト文字列を生成します。Generates a JSON text string for a table, a record, or a value.

DescriptionDescription

Json関数は、データ構造の JAVASCRIPT OBJECT NOTATION (json) 表現をテキストとして返します。これにより、ネットワーク上での格納や転送に適しています。The JSON function returns the JavaScript Object Notation (JSON) representation of a data structure as text so that it's suitable for storing or transmitting across a network. ECMA-404およびIETF RFC 8259では、JavaScript やその他のプログラミング言語で広く使用されている形式について説明しています。ECMA-404 and IETF RFC 8259 describe the format, which is widely used by JavaScript and other programming languages.

キャンバスアプリは、次の表に示すデータ型をサポートしており、テキスト表現の詳細が示されています。Canvas apps support the data types that this table lists with details about their text representation:

データ型Data type DescriptionDescription 結果の例Result example
演算Boolean trueまたはfalsetrue or false. true
Color 色の8桁の16進数表現を含む文字列。String that contains the 8-digit hexadecimal representation for the color. この表現は #rrggbbaaの形式になります。ここで、 rrは赤のコンポーネント、 ggは緑、 bbは青、 aaはアルファチャネルです。This representation takes the format #rrggbbaa, where rr is the red component, gg is green, bb is blue, and aa is the alpha channel. アルファチャネルの場合、 00は完全に透明で、 ffは完全に不透明です。For the alpha channel, 00 is fully transparent, and ff is fully opaque. この文字列をColorvalue関数に渡すことができます。You can pass the string to the ColorValue function. "#102030ff"
通貨Currency ユーザーの言語に適した小数点区切り文字を使用する数値。Number that uses the appropriate decimal separator for the user's language. 必要に応じて、科学的表記法が使用されます。Scientific notation is used if needed. 1.345
予定Date ISO 8601 yyyy-mm-dd形式の日付を含む文字列。String that contains the date in ISO 8601 yyyy-mm-dd format. "2019-03-31"
/DateTime ISO 8601 の日付/時刻を含む文字列。String that contains an ISO 8601 date/time. 日付/時刻値は、末尾の "Z" が示すように UTC で表示されます。Date/time values are in UTC, as the ending "Z" indicates. "2019-03-31T22:32:06.822Z"
GUIDGUID GUID 値を含む文字列。String that contains the GUID value. 文字は小文字です。Letters are lowercase. "751b58ac-380e-4a04-a925-9f375995cc40"
イメージ、メディアImage, Media Includebinarydataを指定した場合、メディアファイルは文字列でエンコードされます。If IncludeBinaryData is specified, media files are encoded in a string. Http: または https: URL スキームを使用する Web 参照は変更されません。Web references that use the http: or https: URL scheme aren't modified. インメモリバイナリデータへの参照は、 "data:mime; base64,..."形式でエンコードされます。References to in-memory binary data are encoded with the "data:mimetype;base64,..." format. インメモリデータには、ユーザーがカメラコントロールと、appres: および BLOB: URL スキームを使用したその他の参照を使用してキャプチャする画像が含まれます。In-memory data includes images that users capture by using the Camera control and any other references with the appres: and blob: URL schemes. "data:image/jpeg;base64,/9j/4AA..."
少数Number ユーザーの言語に適した小数点区切り文字を使用する数値。Number that uses the appropriate decimal separator for the user's language. 必要に応じて、科学的表記法が使用されます。Scientific notation is used if needed. 1.345
オプション  setOption set 表示に使用されるラベルではなく、オプションセットの数値。Numeric value of the option set, not the label that's used for display. この数値は、言語に依存しないために使用されます。The numeric value is used because it's language independent. 1001
ごとTime ISO 8601 hh: mm: ss. fff形式を含む文字列。String that contains an ISO 8601 hh:mm:ss.fff format. "23:12:49.000"
録音Record フィールドとその値のコンマ区切りのリスト ( {} )。Comma-delimited list, between { and }, of fields and their values. この表記は、キャンバスアプリのレコードの場合と似ていますが、名前は常に二重引用符で囲まれています。This notation resembles that for records in canvas apps, but the name is always between double quotation marks. この形式では、多対一のリレーションシップに基づくレコードはサポートされません。This format doesn't support records that are based on many-to-one relationships. { "First Name": "Fred", "Age": 21 }
一覧Table レコードの [ および ] の間のコンマ区切りの一覧。Comma-delimited list, between [ and ], of records. この形式では、一対多のリレーションシップに基づくテーブルはサポートされません。This format doesn't support tables that are based on one-to-many relationships. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
2つの  optionTwo option 表示に使用されるラベルではなく、 trueまたはfalseの2つのオプションのブール値。Boolean value of the two option, true or false, not the label that's used for display. ブール値は、言語に依存しないために使用されます。The Boolean value is used because it's language independent. false
Hyperlink、TextHyperlink, Text 二重引用符で囲まれた文字列。String between double quotation marks. 関数は、埋め込みの二重引用符を円記号でエスケープし、改行文字を "\n" に置き換え、その他の標準的な JavaScript の置換を行います。The function escapes embedded double-quotation marks with a backslash, replaces newlines with "\n", and makes other standard JavaScript replacements. "This is a string."

オプションのFormat引数を指定して、結果の読み取り方法とサポートされていないデータ型およびバイナリデータ型の処理方法を制御します。Specify the optional Format argument to control how readable the result is and how unsupported and binary data types are handled. 既定では、出力はできるだけコンパクトになります。不要なスペースや改行は不要で、サポートされていないデータ型とバイナリデータは使用できません。By default, the output is as compact as possible with no unnecessary spaces or newlines, and unsupported data types and binary data aren't allowed. & 演算子を指定する場合は、複数の形式を組み合わせることができます。You can combine multiple formats if you specify the & operator.

JSONFormat 列挙型JSONFormat enum DescriptionDescription
Cd-rCompact 既定値。Default. 出力は、スペースや改行を追加しなくても、できるだけコンパクトになります。The output is as compact as possible with no added spaces or newlines.
IndentFourIndentFour 読みやすさを向上させるために、出力には各列および入れ子レベルの改行が含まれており、インデントレベルごとに4つのスペースが使用されます。To improve readability, the output contains a newline for each column and nesting level and uses four spaces for each indentation level.
IncludeBinaryDataIncludeBinaryData 結果には、イメージ、ビデオ、およびオーディオクリップの列が含まれます。The result includes image, video, and audio-clip columns. この形式は、結果のサイズを大幅に増やし、アプリのパフォーマンスを低下させる可能性があります。This format can dramatically increase the result's size and degrade your app's performance.
IgnoreBinaryDataIgnoreBinaryData 結果には、イメージ、ビデオ、またはオーディオクリップの列は含まれません。The result doesn't include image, video, or audio-clip columns. Includebinarydataignorebinarydataも指定しない場合、関数はバイナリデータを検出するとエラーを生成します。If you specify neither IncludeBinaryData nor IgnoreBinaryData, the function produces an error if it encounters binary data.
IgnoreUnsupportedTypesIgnoreUnsupportedTypes サポートされていないデータ型を使用することはできますが、結果には含まれません。Unsupported data types are allowed, but the result won't include them. 既定では、サポートされていないデータ型によってエラーが生成されます。By default, unsupported data types produce an error.

結果に含まれるデータを制御し、サポートされていないデータ型を削除するには、 showcolumns関数とdropcolumns 関数を使用します。Use the ShowColumns and DropColumns functions to control which data the result includes and to remove unsupported data types.

JSONはメモリとコンピューティング集中型の両方になる可能性があるため、この関数は動作関数でのみ使用できます。Because JSON can be both memory and compute intensive, you can use this function only in behavior functions. JSONの結果を変数にキャプチャして、データフローで使用することができます。You can capture the result from JSON into a variable, which you can then use in data flow.

列に表示名と論理名の両方がある場合、結果には論理名が含まれます。If a column has both a display name and a logical name, the result contains the logical name. 表示名はアプリユーザーの言語を反映しているため、共通サービスへのデータ転送には不適切です。Display names reflect the language of the app user and are, therefore, inappropriate for data transfer to a common service.

構文Syntax

JSON( DataStructure [, Format ])JSON( DataStructure [, Format ] )

  • DataStructure –必須。DataStructure – Required. JSON に変換するデータ構造体。The data structure to convert to JSON. テーブル、レコード、およびプリミティブ値がサポートされ、任意に入れ子になっています。Tables, records, and primitive values are supported, arbitrarily nested.
  • Format -省略可能。Format - Optional. Jsonformat列挙値。JSONFormat enum value. 既定値はCompactです。この場合、改行やスペースは追加されず、バイナリデータとサポートされていない列はブロックされます。The default value is Compact, which doesn't add newlines or spaces and blocks binary data and unsupported columns.

Examples

階層データHierarchical data

  1. ボタンコントロールを挿入し、そのonselectプロパティを次の数式に設定します。Insert a Button control, and set its OnSelect property to this formula.

    ClearCollect( CityPopulations,
        { City: "London",    Country: "United Kingdom", Population: 8615000 },
        { City: "Berlin",    Country: "Germany",        Population: 3562000 },
        { City: "Madrid",    Country: "Spain",          Population: 3165000 },
        { City: "Hamburg",   Country: "Germany",        Population: 1760000 },
        { City: "Barcelona", Country: "Spain",          Population: 1602000 },
        { City: "Munich",    Country: "Germany",        Population: 1494000 }
    );
    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
    
  2. Alt キーを押しながらボタンを選択します。Select the button while holding down the Alt key.

    CitiesByCountryコレクションは、このデータ構造を使用して作成されます。このデータ構造を表示するには、 [ファイル] メニューの [コレクション] を選択し、コレクションの名前を選択します。The CitiesByCountry collection is created with this data structure, which you can show by selecting Collections on the File menu and then selecting the name of the collection.

    CitiesByCountry collectionCitiesByCountry collection

    このコレクションを表示するには、[ファイル > アプリの設定 > 詳細 > 設定] を選択し、 [ 数式バーの結果ビューを有効にする] を選択し、数式バーでコレクションの名前を選択してから、数式バーの下のコレクション名の横にある下矢印。You can also show this collection by selecting File > App settings > Advanced settings > Enable formula bar result view, selecting the name of the collection in the formula bar, and then selecting the down arrow next to the name of the collection under the formula bar.

    数式バーの結果ビューの コレクションCollection in the formula bar's result view

  3. 別のボタンを挿入し、そのOnselectプロパティを次の数式に設定します。Insert another button, and set its OnSelect property to this formula:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    この数式は、グローバル変数CitiesByCountryJSONCitiesByCountryの JSON 表現に設定します。This formula sets the global variable CitiesByCountryJSON to the JSON representation for CitiesByCountry.

  4. Alt キーを押しながらボタンを選択します。Select the button while holding down the Alt key.

  5. ラベルコントロールを挿入し、 Textプロパティをこの変数に設定します。Insert a Label control, and set its Text property to this variable.

    CitiesByCountryJSON
    

    ラベルは、次の結果を示しています。この結果はすべて、スペースを含まない1行になり、ネットワーク経由の送信に適しています。The label shows this result, all on a single line with no spaces, suitable for transmission across a network:

    [{"Cities":[{"City":"London","Population":8615000}],"Country":"United Kingdom"},{"Cities":[{"City":"Berlin","Population":3562000},{"City":"Hamburg","Population":1760000},{"City":"Munich","Population":1494000}],"Country":"Germany"},{"Cities":[{"City":"Madrid","Population":3165000},{"City":"Barcelona","Population":1602000}],"Country":"Spain"}]
    
  6. 2番目のボタンの数式を変更して、出力を読みやすくします。Change the second button's formula to make the output more readable.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Alt キーを押しながら2番目のボタンを選択します。Select the second button while holding down the Alt key.

    ラベルは、読みやすい結果を示しています。The label shows the more readable result.

    [
        {
            "Cities": [
                {
                    "City": "London",
                    "Population": 8615000
                }
            ],
            "Country": "United Kingdom"
        },
        {
            "Cities": [
                {
                    "City": "Berlin",
                    "Population": 3562000
                },
                {
                    "City": "Hamburg",
                    "Population": 1760000
                },
                {
                    "City": "Munich",
                    "Population": 1494000
                }
            ],
            "Country": "Germany"
        },
        {
            "Cities": [
                {
                    "City": "Madrid",
                    "Population": 3165000
                },
                {
                    "City": "Barcelona",
                    "Population": 1602000
                }
            ],
            "Country": "Spain"
        }
    ]
    

Base64 のイメージとメディアImages and media in base64

  1. イメージコントロールを追加します。Add an Image control.

    このコントロールは、 Sampleimageをこのコントロールに取り込みます。This control brings SampleImage with it.

  2. ボタンコントロールを追加し、そのonselectプロパティをこの数式に設定します。Add a Button control, and set its OnSelect property to this formula.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Alt キーを押しながらボタンを選択します。Select the button while holding down the Alt key.

  4. ラベルを追加し、 Textプロパティをこの変数に設定します。Add a label, and set its Text property to this variable.

    ImageJSON
    
  5. コントロールのサイズを変更し、必要に応じてフォントサイズを縮小して、結果のほとんどを表示します。Resize the control and reduce the font size as needed to show most of the result.

    ラベルには、 JSON関数によってキャプチャされたテキスト文字列が表示されます。The label shows the text string that the JSON function captured.

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"