JSON-függvény

A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások

JSON formátumú szöveges sztringet hoz létre egy táblázathoz, egy rekordhoz vagy egy értékhez.

Ismertetés

A JSON függvény az adatstruktúra JavaScript Object Notation (JSON) ábrázolását adja vissza szövegként, így alkalmas a hálózaton tárolásra vagy továbbításra. [ECMA-404] (https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf és az IETF RFC 8259 leírja a formátumot, amelyet széles körben használnak a JavaScript és más programozási nyelvek.

A vászonalapú alkalmazások támogatják azokat az adattípusokat, amelyeket ez a táblázat felsorol a szöveges ábrázolásra vonatkozó részletekkel együtt:

Adattípus Ismertetés Eredmény példája
Logikai igaz vagy hamis. true
Szín A szín 8 jegyű hexadecimális ábrázolását tartalmazó karakterlánc. Ez a reprezentációs formátum #rrggbbaa, ahol rr a piros összetevő, a gg a zöld, a bb a kék, az aa pedig az alfacsatorna. Az alfa csatorna esetében a 00 teljesen átlátszó, és az ff teljesen átlátszatlan. A karakterláncot átadhatja a ColorValue függvénynek. "#102030ff"
Pénznem A felhasználó nyelvének megfelelő decimális elválasztót használó szám. Szükség esetén tudományos jelölést kell használni. 1.345
Dátum A dátumot tartalmazó karakterlánc ISO 8601 éééé-hh-nn formátumban. "2019-03-31"
DátumIdő ISO 8601 dátumot/időpontot tartalmazó karakterlánc. A dátum-és időértékek UTC-ben vannak, ahogy a „Z” végződés jelzi. "2019-03-31T22:32:06.822Z"
GUID A GUID-értéket tartalmazó karakterlánc. A betűk kisbetűsek. "751b58ac-380e-4a04-a925-9f375995cc40"
Kép, média Ha a JSONFormat.IncludeBinaryData meg van adva, a médiafájlok sztringben vannak kódolva. A http: vagy https: URL-sémát használó webhivatkozások nem módosulnak. A memóriában lévő bináris adatokra mutató hivatkozások az "data:mimetype;base64,..." formátumban vannak kódolva. A memóriában tárolt adatok olyan képeket tartalmaznak, amelyeket a felhasználók a Fényképezőgép vezérlőjével és más hivatkozásokkal az appres: és blob: URL sémákkal rögzítenek. "data:image/jpeg;base64,/9j/4AA..."
Szám A felhasználó nyelvének megfelelő decimális elválasztót használó szám. Szükség esetén tudományos jelölést kell használni. 1.345
Értékkészlet A választási lehetőség numerikus értéke, nem a megjelenítéshez használt címke. A numerikus értéket van használva, mert az nyelvtől független. 1001
Time ISO 8601 óó:pp:mp.fff formátumú karakterlánc. "23:12:49.000"
Bejegyzés Vesszővel tagolt felsorolás, { és } a mezők és értékekeik között. Ez a jelölés hasonlít a vászonalapú alkalmazások bejegyzéseihez, de a név mindig dupla idézőjelek között van. Ez a formátum nem támogatja a sok-az-egyhez kapcsolatok alapuló rekordokat. { "First Name": "Fred", "Age": 21 }
Table Vesszővel tagolt felsorolás ; [ és ] a bejegyzések között. Ez a formátum nem támogatja az egy-a-sokhoz kapcsolatokon alapuló táblákat. A JSONFormat.FlattenValueTables beállítással eltávolíthatja az egyoszlopos táblák rekordját az Érték nevűoszloppal. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Két lehetőség A kétlehetőség logikai értéke, igaz vagy hamis, nem a megjelenítéshez használt címke. Logikai érték van használva, mert az nyelvtől független. false
Hiperhivatkozás, Szöveg Karakterlánc idézőjelek között. A függvény kilép a beágyazott dupla idézőjelek fordított perjellel esetében, lecseréli a sortöréseket egy „\n” karakterrel, és elvégzi a standard JavaScript-cseréket. "This is a string."

A nem támogatott és a bináris adattípusok kezelési módjának meghatározásához adjon meg egy nem kötelező Formátum argumentumot. Alapértelmezés szerint a kimenet a lehető legtömörebb a szükségtelen szóközök és sortörések nélkül, a nem támogatott adattípusok és a bináris adatok nem engedélyezettek. Több formátumot is kombinálhat, ha megadja a & operátor.

JSONFormat felsorolása Description
JSONFormat.Compact Alapértelmezett. A kimenet a lehető legkompaktabb, hozzáadott szóközök vagy sortörések nélkül.
JSONFormat.FlattenValueTables Értéktáblaként a [1,2,3] jelölés olyan rekordokat tartalmazó táblát eredményez, amelyekben minden rekord egyetlen Érték oszloppal rendelkezik. A JSON-ban ugyanez a jelölés három számból álló tömböt jelöl. A kettő közötti együttműködés megkönnyítése érdekében ez a beállítás rekordtömb Power Fx helyett JSON-barát tömbbe simítja a Value táblát.
JSONFormat.IndentFour Az olvashatóság javítása érdekében a kimenet egy sortörést tartalmaz minden oszlophoz és beágyazási szinthez, és az egyes behúzási szintekhez négy szóközt használ.
JSONFormat.IncludeBinaryData Az eredmény tartalmazza a kép-, videó- és audioklipek oszlopokat. Ez a formátum jelentősen növelheti az eredmény méretét, és rontja az alkalmazás teljesítményét.
JSONFormat.IgnoreBinaryData Az eredmény nem tartalmazza a kép-, videó- és audioklipek oszlopokat. Ha sem a JSONFormat.IncludeBinaryData , sem a JSONFormat.IgnoreBinaryData értéketnem adja meg, a függvény hibát jelez, ha bináris adatokkal találkozik.
JSONFormat.IgnoreUnsupportedTypes A nem támogatott adattípusok megengedettek, de az eredmény nem tartalmazza azokat. A nem támogatott adattípusok alapértelmezés szerint hibát eredményeznek.

A ShowColumns és a DropColumns függvények segítségével szabályozhatja, hogy az eredmény mely adatokat tartalmazza, és hogy el legyenek távolítva a nem támogatott adattípusok.

Mivel a JSON lehet memória- és számításigényes is lehet, ezt a funkciót csak a viselkedési képletekben használhatja. A JSON eredményét egy változóba rögzítheti, amit használhat adatfolyamban.

Ha egy oszlophoz megjelenítendő név és logikai név is tartozik, akkor az eredmény a logikai nevet tartalmazza. A megjelenítendő nevek az alkalmazás felhasználójának nyelvét tükrözik, ezért nem megfelelőek a közös szolgáltatáshoz való adatátvitelre.

Szintaxis

JSON( DataStructure [, Formátum ] )

  • DataStructure – Kötelező. A JSON konvertálásához tartozó adatstruktúra. A táblázatok, a bejegyzések és a primitív értékek támogatottak, önkényesen beágyazottan.
  • Formátum – Nem kötelező. JSONFormat felsorolásérték. Az alapértelmezett érték a JSONFormat.Compact, amely nem ad hozzá új sorokat vagy szóközöket, és blokkolja a bináris adatokat és a nem támogatott oszlopokat.

Példák

Hierarchikus adatok

  1. Adjon hozzá egy Gomb vezérlőelemet, és az OnSelect tulajdonság értékeként adja meg ezt a képletet.

    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. Az Alt billentyűt lenyomva tartva válassza ki a gombot.

    A CitiesByCountry gyűjtemény ezzel az adatstruktúrával jön létre, amelyet a Fájl menü Gyűjtemények pontjának kiválasztásával, majd a gyűjtemény nevének kiválasztásával tud megjeleníteni.

    CitiesByCountry gyűjtemény.

    Ezt a gyűjteményt úgy is megtekintheti, ha kiválasztja a Beállítások>Hamarosan elérhető funkciók>Szerkesztőléc eredménye megtekintésének engedélyezése lehetőséget, kijelöli a gyűjtemény nevét a szerkesztőlécben, majd a szerkesztőléc alatt a gyűjtemény neve melletti, lefelé mutató nyílra kattint.

    Gyűjtemény a szerkesztőléc eredménynézetében.

  3. Szúrjon be egy másik gombot és az OnSelect tulajdonság értékeként adja meg ezt a képletet:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Ez a képlet a CitiesByCountryJSON globális változót állítja be a CitiesByCountry JSON megjelenítéséhez.

  4. Az Alt billentyűt lenyomva tartva válassza ki a gombot.

  5. Szúrjon be egy Címke vezérlőelemet, és a Szöveg tulajdonságát állítsa erre a változóra.

    CitiesByCountryJSON
    

    A címke megjeleníti ezt az eredményt, mindezt egyetlen, szóközök nélküli sorban, amely a hálózaton keresztüli átvitelre alkalmas:

    [
      {
        "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. Módosítsa a második gomb képletét, hogy a kimenet olvashatóbb legyen.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Az Alt billentyűt lenyomva tartva válassza ki a második gombot.

    A címke olvashatóbb eredményt jelenít meg.

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

A képek és a média Base64-ben

  1. Adjon hozzá egy Kép vezérlőt.

    Ez a vezérlő egy SampleImage elemet hoz magával.

  2. Adjon hozzá egy Gomb vezérlőelemet, és az OnSelect tulajdonság értékeként adja meg a következő képletet.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Az Alt billentyűt lenyomva tartva válassza ki a gombot.

  4. Adjon hozzá egy címkét, majd állítsa be a Szöveg tulajdonságát erre a változóra.

    ImageJSON
    
  5. Méretezze át a vezérlőelemet, és csökkentse a betűméretet az eredmény nagy részének megjelenítéséhez.

    A címke megjeleníti azt a szöveges karakterláncot, amelyet a JSON függvény rögzített.

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

Értéktáblák

Ez a képlet:

JSON( [1,2,3] )

Létrehozza a szöveges karakterláncot [{"Value":1},{"Value":2},{"Value":3}].

Ugyanez a képlet a JSONFormat.FlattenValueTables beállítással:

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

Létrehozza a szöveges karakterláncot [1,2,3].

Vegye figyelembe, hogy a FlattenValueTables beállításnak nincs hatása, ha JSON-t használ a CityPopulations vagy a CitiesByCountry gyűjteményekkel, mivel ezek a táblák nem értéktáblák. Az Érték tábla egyetlen oszlopból áll, és "Érték" névvel kell ellátni.