Sdílet prostřednictvím


Funkce JSON

Platí pro: Aplikace plátna Modelem řízené aplikace Power Pages

Vygeneruje textový řetězec JSON pro tabulku, záznam nebo hodnotu.

Popis

Funkce JSON vrací znázornění datové struktury JavaScript Object Notation (JSON) jako text, takže je vhodná pro ukládání nebo přenos v síti. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf a IETF RFC 8259 popisují formát, který je široce používán jazykem JavaScript a jinými programovacími jazyky.

Aplikace plátna podporují datové typy, které uvádí tato tabulka s podrobnostmi o jejich textovém znázornění:

Datový typ Popis Příklad výsledku
Logická hodnota true nebo false. true
Color (Barva) Řetězec, který obsahuje 8místné hexadecimální znázornění barvy. Tohle znázornění má formát #rrggbbaa, kde rr je červená složka, gg je zelená, bb je modrá a aa je alfa kanál. Pro alfa kanál znamená 00 plně transparentní a ff plně neprůhledný. Řetězec můžete předat do funkce ColorValue. "#102030ff"
Měna Číslo, které používá příslušný oddělovač desetinných míst pro jazyk uživatele. V případě potřeby se používá vědecký zápis. 1.345
Datum Řetězec, který obsahuje datum ve formátu ISO 8601 rrrr-mm-dd. "2019-03-31"
Datum a čas Řetězec, který obsahuje datum a čas podle ISO 8601. Hodnoty datum/čas jsou v UTC, jak ukazuje koncový znak „Z“. "2019-03-31T22:32:06.822Z"
GUID Řetězec, který obsahuje hodnotu GUID. Písmena jsou malá. "751b58ac-380e-4a04-a925-9f375995cc40"
Obrázek, média Pokud je zadáno JSONFormat.IncludeBinaryData, soubory médií jsou kódovány v řetězci. Webové odkazy, které používají schéma http: nebo https: URL, se nezmění. Odkazy na binární data v paměti jsou kódovány pomocí formátu "data:mimetype;base64,...". Data v paměti zahrnují obrázky, které uživatelé zachytí pomocí ovládacího prvku Camera a jakékoli další odkazy se schématy appres: a blob: URL. "data:image/jpeg;base64,/9j/4AA..."
Počet Číslo, které používá příslušný oddělovač desetinných míst pro jazyk uživatele. V případě potřeby se používá vědecký zápis. 1.345
Sada možností Číselná hodnota volby, nikoli popisek, který se používá k zobrazení. Číselná hodnota se používá, protože je nezávislá na jazyce. 1001
Time Řetězec, který obsahuje formát ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Záznam Seznam polí a jejich hodnot oddělených čárkami mezi závorkami { a }. Tento zápis se podobá zápisu pro aplikace plátna, ale název je vždy mezi dvojitými uvozovkami. Tento formát nepodporuje záznamy, které jsou založeny na vztazích N:1. { "First Name": "Fred", "Age": 21 }
Table Seznam záznamů oddělených čárkami mezi závorkami [ a ]. Tento formát nepodporuje tabulky, které jsou založeny na vztazích 1:N. Pomocí možnosti JSONFormat.FlattenValueTables odstraňte záznam pro tabulky s jedním sloupcem se sloupcem s názvem Value. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dvě možnosti Logická hodnota dvou možností pravda nebo nepravda, nikoli zobrazovaný popisek. Logická hodnota se používá, protože je nezávislá na jazyce. false
Hypertextový odkaz, text Řetězec mezi dvojitými uvozovkami. Funkce dekóduje vložené dvojité uvozovky s opačným lomítkem, nahradí nové řádky znakem „\n“ a provede další standardní nahrazení JavaScriptu. "This is a string."

Zadejte volitelný argument Formát, který určuje, jak je výsledek čitelný a jak se pracuje s nepodporovanými a binárními datovými typy. Ve výchozím nastavení je výstup co nejkompaktnější bez zbytečných mezer nebo nových řádků a nepodporované datové typy a binární data nejsou povoleny. Můžete kombinovat více formátů, pokud zadáte operátor &.

Výčet JSONFormat Description
JSONFormat.Compact Výchozí. Výstup je co nejkompaktnější bez přidaných mezer nebo nových řádků.
JSONFormat.FlattenValueTables Jako Tabulka hodnot výsledkem zápisu [1,2,3] je tabulka obsahující záznamy, kde každý záznam má jeden sloupec Value. V JSON stejný zápis představuje pole tří čísel. Aby se usnadnila interoperabilita mezi těmito dvěma, tato možnost zplošťuje tabulku Value Power Fx na pole přátelské pro JSON namísto pole záznamů.
JSONFormat.IndentFour Pro zlepšení čitelnosti obsahuje výstup nový řádek pro každý sloupec a úroveň vnoření a používá čtyři mezery pro každou úroveň odsazení.
JSONFormat.IncludeBinaryData Výsledek zahrnuje sloupce obrázků, videa a zvukových klipů. Tento formát může dramaticky zvětšit velikost výsledku a snížit výkon aplikace.
JSONFormat.IgnoreBinaryData Výsledek nezahrnuje sloupce obrázků, videa nebo zvukových klipů. Pokud nezadáte ani JSONFormat.IncludeBinaryData ani JSONFormat.IgnoreBinaryData, funkce způsobí chybu, pokud narazí na binární data.
JSONFormat.IgnoreUnsupportedTypes Nepodporované datové typy jsou povoleny, ale výsledek je nezahrnuje. Ve výchozím nastavení nepodporované datové typy způsobují chybu.

Použijte funkce ShowColumns a DropColumns pro určení, která data výsledek obsahuje, a pro odstranění nepodporovaných datových typů.

Protože formát JSON může být náročný na paměť i výpočet, tuto funkci můžete použít pouze ve funkcích chování. Výsledek z JSON můžete zachytit v proměnné, kterou pak můžete použít v toku dat.

Pokud sloupec obsahuje jak zobrazovaný, tak i logický název, výsledek obsahuje logický název. Zobrazované názvy odrážejí jazyk uživatele aplikace, a proto nejsou vhodné pro přenos dat do společné služby.

Syntaxe

JSON( Struktura dat [, Formát ] )

  • Struktura dat – povinné. Struktura dat pro převod na JSON. Tabulky, záznamy a primitivní hodnoty jsou podporovány a libovolně vnořeny.
  • Formát – volitelné. Hodnota výčtu JSONFormat. Výchozí hodnota je JSONFormat.Compact, která nepřidává nové řádky nebo mezery a blokuje binární data a nepodporované sloupce.

Příklady

Hierarchická data

  1. Vložte ovládací prvek Button a nastavte jeho vlastnost OnSelect na tento vzorec.

    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. Vyberte tlačítko, zatímco držíte stisknutou klávesu Alt.

    Kolekce CitiesByCountry je vytvořena s touto strukturou dat, kterou můžete zobrazit výběrem položky Kolekce v nabídce Soubor a poté výběrem názvu kolekce.

    Kolekce CitiesByCountry.

    Tuto kolekci můžete také zobrazit výběrem Nastavení>Připravované funkce>Povolit zobrazení výsledků řádku vzorců, výběrem názvu kolekce na řádku vzorců a poté výběrem šipky dolů vedle názvu kolekce pod řádkem vzorců.

    Kolekce ve zobrazení výsledků na řádku vzorců.

  3. Vložte další tlačítko a nastavte jeho vlastnost OnSelect na tento vzorec:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Tento vzorec nastavuje globální proměnnou CitiesByCountryJSON na znázornění JSON pro CitiesByCountry.

  4. Vyberte tlačítko, zatímco držíte stisknutou klávesu Alt.

  5. Přidejte ovládací prvek Label a jeho vlastnost Text nastavte na tuto proměnnou.

    CitiesByCountryJSON
    

    Popisek zobrazuje tento výsledek, vše na jednom řádku bez mezer, vhodný pro přenos v síti:

    [
      {
        "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. Změňte vzorec druhého tlačítka, aby byl výstup čitelnější.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Podržte stisknutou klávesu Alt a vyberte druhé tlačítko.

    Popis zobrazuje čitelnější výsledek.

    [
      {
        "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"
      }
    ]
    

Obrázky a média v base64

  1. Přidejte ovládací prvek Image.

    Tento ovládací prvek s sebou přináší SampleImage.

  2. Přidejte ovládací prvek Button a nastavte jeho vlastnost OnSelect na tento vzorec.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Vyberte tlačítko, zatímco držíte stisknutou klávesu Alt.

  4. Přidejte popisek a jeho vlastnost Text nastavte na tuto proměnnou.

    ImageJSON
    
  5. Změňte velikost ovládacího prvku a podle potřeby zmenšete velikost písma, aby se zobrazila většina výsledku.

    Popisek zobrazuje textový řetězec, který zachytila funkce JSON.

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

Tabulky hodnot

Tento vzorec:

JSON( [1,2,3] )

vytvoří textový řetězec [{"Value":1},{"Value":2},{"Value":3}].

Stejný vzorec s možností JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

vytvoří textový řetězec [1,2,3].

Možnost FlattenValueTables nemá žádný vliv při použití JSON s kolekcemi CityPopulations nebo CitiesByCountry, protože tyto tabulky nejsou tabulkami hodnot. Tabulka Value má jeden sloupec a musí mít název „Value“.