Zdieľať cez


Funkcia JSON

Vzťahuje sa na: aplikácie plátna aplikácie s podporou modelov Power Pages

Vygeneruje textový reťazec JSON pre tabuľku, záznam alebo hodnotu.

Popis

Funkcia JSON vráti reprezentáciu údajovej štruktúry JavaScript Object Notation (JSON) ako text, takže je vhodná na ukladanie alebo prenos v sieti. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf a IETF RFC 8259 popisujú formát, ktorý je široko používaný JavaScriptom a inými programovacími jazykmi.

Aplikácie plátna podporujú typy údajov, ktoré sú uvedené v tejto tabuľke s podrobnosťami o ich textovom znázornení:

Typ údajov Popis Príklad výsledku
Boolean pravda alebo nepravda. true
Farba Reťazec, ktorý obsahuje 8-ciferné hexadecimálne zobrazenie farby. Táto reprezentácia má formát #rrggbbaa, kde rr je červená zložka, gg je zelená, bb je modrá a aa je alfa kanál. Pre alfa kanál je 00 úplne transparentný a ff úplne nepriehľadný. Reťazec môžete odovzdať do funkcie ColorValue. "#102030ff"
Mena Číslo, ktoré používa príslušný desatinný oddeľovač pre jazyk používateľa. V prípade potreby sa používa vedecký zápis. 1.345
Dátum Reťazec obsahujúci dátum vo formáte ISO 8601 rrrr-mm-dd. "2019-03-31"
Datetime Reťazec, ktorý obsahuje dátum a čas podľa normy ISO 8601. Hodnoty dátumu a času sú v UTC, ako naznačuje „Z“ na konci. "2019-03-31T22:32:06.822Z"
GUID Reťazec, ktorý obsahuje hodnotu GUID. Písmená sú malé. "751b58ac-380e-4a04-a925-9f375995cc40"
Obrázok, médiá Ak je zadané JSONFormat.IncludeBinaryData , mediálne súbory sú zakódované do reťazca. Webové odkazy, ktoré používajú schému URL „http:“ alebo „https:“ sa nemenia. Odkazy na binárne údaje v pamäti sú kódované vo formáte "data:mimetype;base64,...". Dáta v pamäti zahŕňajú obrázky, ktoré používatelia zachytávajú pomocou ovládacieho prvku Fotoaparát a akékoľvek ďalšie odkazy so schémami URL „appres:“ a „blob:“. "data:image/jpeg;base64,/9j/4AA..."
Číslo Číslo, ktoré používa príslušný desatinný oddeľovač pre jazyk používateľa. V prípade potreby sa používa vedecký zápis. 1.345
Množina možností Číselná hodnota výberu, nie označenie, ktoré sa používa na zobrazenie. Číselná hodnota sa používa, pretože je nezávislá od jazyka. 1001
Čas Reťazec, ktorý obsahuje formát ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Záznam Zoznam oddelený čiarkami, medzi { a }, polí a ich hodnôt. Tento zápis sa podobá na záznamy v aplikáciách plátna, ale názov je vždy medzi dvojitými úvodzovkami. Tento formát nepodporuje záznamy, ktoré sú založené na vzťahoch mnohé k jednému. { "First Name": "Fred", "Age": 21 }
Table Zoznam oddelený čiarkami, medzi [ a ], záznamov. Tento formát nepodporuje tabuľky, ktoré sú založené na vzťahoch typu jeden k mnohým. Pomocou možnosti JSONFormat.FlattenValueTables odstráňte záznam pre tabuľky s jedným stĺpcom so stĺpcom s názvom Value. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Dve možnosti Logická hodnota oboch možností, pravda alebo nepravda, nie štítok, ktorý sa používa na zobrazenie. Logická hodnota sa používa, pretože je nezávislá od jazyka. false
Hyperlink, Text Reťazec medzi dvojitými úvodzovkami. Funkcia sa ukončuje vloženými dvojitými úvodzovkami so spätnou lomkou, nahrádza nové riadky za „\n“ a vykonáva ďalšie štandardné náhrady JavaScript. "This is a string."

Zadajte voliteľný argument Formát na kontrolu toho, ako je výsledok čitateľný a ako sa zaobchádza s nepodporovanými a binárnymi typmi údajov. Výstup je v predvolenom nastavení čo najkompaktnejší bez zbytočných medzier alebo nových riadkov a nepodporované typy údajov a binárne údaje nie sú povolené. Ak zadáte operátor & , môžete kombinovať viacero formátov.

Enumerácia JSONFormat Description
JSONFormat.Compact Predvolené. Výstup je čo najkompaktnejší bez pridania medzier alebo nových riadkov.
JSONFormat.FlattenValueTables Ako Tabuľka hodnôt, [1,2,3] zápis vedie k tabuľke obsahujúcej záznamy, kde každý záznam má jednu hodnotu . V JSON ten istý zápis predstavuje pole troch čísel. Aby sa uľahčila interoperabilita medzi týmito dvoma, táto možnosť zlúči tabuľku Power Fx Value do poľa priateľského formátu JSON namiesto poľa záznamov.
JSONFormat.IndentFour Na zlepšenie čitateľnosti obsahuje výstup nový riadok pre každý stĺpec a úroveň vnorenia a používa štyri medzery pre každú úroveň odsadenia.
JSONFormat.IncludeBinaryData Výsledkom sú stĺpce obrázkov, videa a zvukových klipov. Tento formát môže dramaticky zväčšiť veľkosť výsledku a znížiť výkonnosť vašej aplikácie.
JSONFormat.IgnoreBinaryData Výsledok neobsahuje stĺpce obrázkov, videa a zvukových klipov. Ak nezadáte ani JSONFormat.IncludeBinaryData ani JSONFormat.IgnoreBinaryData, funkcia vygeneruje chybu, ak narazí na binárne údaje.
JSONFormat.IgnoreUnsupportedTypes Nepodporované typy údajov sú povolené, ale výsledok ich nebude obsahovať. V predvolenom nastavení nepodporované typy údajov spôsobujú chybu.

Funkcie ShowColumns a DropColumns použite na kontrolu, ktoré údaje výsledok obsahuje, a na odstránenie nepodporovaných typov údajov.

Pretože JSON môže byť náročná na pamäť aj na výpočet, túto funkciu môžete použiť iba vo vzorcoch správania. Môžete zachytiť výsledok z JSON do premennej, ktorú potom môžete použiť v toku údajov.

Ak stĺpec obsahuje zobrazovaný názov aj logický názov, výsledok obsahuje logický názov. Zobrazované názvy odrážajú jazyk používateľa aplikácie, a preto nie sú vhodné na prenos údajov do spoločnej služby.

Syntax

JSONDataStructure [, Format ] )

  • DataStructure – povinné. Štruktúra údajov na konverziu do JSON. Tabuľky, záznamy a primitívne hodnoty sú podporované, ľubovoľne vnorené.
  • Format – voliteľné. Hodnota enumerácie JSONFormat. Predvolená hodnota je JSONFormat.Compact, ktorá nepridáva nové riadky ani medzery a blokuje binárne údaje a nepodporované stĺpce.

Príklady

Hierarchické údaje

  1. Vložte ovládací prvok Tlačidlo a nastavte jeho vlastnosť 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. Podržte kláves Alt a vyberte tlačidlo.

    Vytvorí sa kolekcia CitiesByCountry s touto dátovou štruktúrou, ktorú môžete zobraziť výberom možnosti Collections v ponuke File a následným výberom názvu kolekcie.

    Zbierka miest podľa krajiny.

    Túto zbierku môžete tiež zobraziť stlačením možnosti Nastavenia > Pripravované funkcie > Povoliť zobrazenie výsledkov na riadku vzorcov, výberom názvu kolekcie na paneli vzorcov a následným výberom šípky nadol vedľa názvu kolekcie pod panelom vzorcov.

    Kolekcia v zobrazení výsledkov panela vzorcov.

  3. Vložte ďalšie tlačidlo a nastavte jeho vlastnosť OnSelect na tento vzorec:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Tento vzorec nastavuje globálnu premennú CitiesByCountryJSON do reprezentácie JSON pre CitiesByCountry.

  4. Podržte kláves Alt a vyberte tlačidlo.

  5. Vložte ovládací prvok Označenie a nastavte jeho vlastnosť Text na túto premennú.

    CitiesByCountryJSON
    

    Označenie ukazuje tento výsledok, všetko na jednom riadku bez medzier, vhodný na prenos v sieti:

    [
      {
        "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. Zmeňte vzorec druhého tlačidla, aby bol výstup čitateľnejší.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Podržte kláves Alt a vyberte druhé tlačidlo.

    Označenie zobrazuje čitateľnejší výsledok.

    [
      {
        "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édiá v base64

  1. Pridajte ovládací prvok Obrázok.

    Tento ovládací prvok prináša SampleImage.

  2. Pridajte ovládací prvok Tlačidlo a nastavte jeho vlastnosť OnSelect na tento vzorec.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Podržte kláves Alt a vyberte tlačidlo.

  4. Pridajte označenie a do jeho vlastnosti Text zadajte túto premennú.

    ImageJSON
    
  5. Zmeňte veľkosť ovládacieho prvku a podľa potreby zmenšite veľkosť písma, aby sa zobrazila väčšina výsledku.

    Štítok zobrazuje textový reťazec, ktorý zachytila funkcia JSON.

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

Tabuľky hodnôt

Tento vzorec:

JSON( [1,2,3] )

Vytvorí textový reťazec [{"Value":1},{"Value":2},{"Hodnota":3}].

Rovnaký vzorec s možnosťou JSONFormat.FlattenValueTables:

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

Vytvorí textový reťazec [1,2,3].

Upozorňujeme, že možnosť FlattenValueTables nemá žiadny vplyv pri používaní JSON s kolekciami CityPopulations alebo CitiesByCountry , pretože tieto tabuľky nie sú Tabuľky hodnôt. Tabuľka hodnôt má jeden stĺpec a musí mať názov "Hodnota".