JSON funkcija
Taikoma: drobės programoms Modeliu pagrįstoms programoms Power Pages
Sugeneruoja lentelės, įrašo arba reikšmės JSON teksto eilutę.
Aprašas
Funkcija JSON „JavaScript Object Notation“ (JSON) pavidalo duomenų struktūrą pateikia kaip tekstą, kad ji būtų tinkama saugoti arba perduoti tinklu. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf ir IETF RFC 8259 apibūdina formatą, kurį plačiai naudoja JavaScript ir kitos programavimo kalbos.
Drobės programos palaiko duomenų tipus, išvardytus šioje lentelėje, kurioje taip pat nurodoma informacija apie jų tekstinį vaizdavimą:
Duomenų tipas | Aprašas | Rezultato pavyzdys |
---|---|---|
Bulio logikos | teisinga arba klaidinga. | true |
Spalva | Eilutė, kurioje yra 8 skaitmenų šešioliktainė spalvos reikšmė. Šio pavidalo formatas yra #rrggbbaa, kur rr yra raudonas komponentas, gg – žalias, bb – mėlynas, o aa yra alfa kanalas. Naudojant alfa kanalą, 00 yra visiškai permatoma, o ff – visiškai nepermatoma. Eilutę galite perduoti funkcijai ColorValue. | "#102030ff" |
Valiuta | Skaičius, kuriame naudojamas tinkamas dešimtainis skyriklis pagal vartotojo kalbą. Jei reikia, naudojamas mokslinis žymėjimas. | 1.345 |
Data | Eilutė su data, nurodyta ISO 8601 mmmm-mm-dd formatu. | "2019-03-31" |
DateTime | Eilutė, kurioje yra ISO 8601 data / laikas. Datos / laiko reikšmės yra UTC, kaip nurodo pabaiga „Z“. | "2019-03-31T22:32:06.822Z" |
GUID | Eilutė, kurioje yra GUID reikšmė. Raidės yra mažosios. | "751b58ac-380e-4a04-a925-9f375995cc40" |
Vaizdas, žiniasklaida | Jei JSONFormat.IncludeBinaryData nurodytas, medijos failai užkoduojami eilutėje. Žiniatinklio nuorodos, kuriose naudojama http: arba https: URL schema, nėra modifikuojamos. Nuorodos į atmintyje esančius dvejetainius duomenis užkoduojamos naudojant formatą "data:mimetype;base64,...". Atmintyje esantys duomenys apima vaizdus, kuriuos vartotojai fiksuoja naudodami fotoaparato valdiklį, ir kitos nuorodos su appres: bei blob: URL schemomis. | "data:image/jpeg;base64,/9j/4AA..." |
Numeris | Skaičius, kuriame naudojamas tinkamas dešimtainis skyriklis pagal vartotojo kalbą. Jei reikia, naudojamas mokslinis žymėjimas. | 1.345 |
parinkčių rinkinys | Skaitinė pažymėtų reikšmių, o ne žymą, naudojamą rodant. Skaitinė reikšmė naudojama, nes ji nepriklauso nuo kalbos. | 1001 |
Laikas | Eilutė, kurioje naudojamas ISO 8601 formatas hh:mm:ss.fff. | "23:12:49.000" |
Įrašas | Kableliais atskirtas laukų ir jų reikšmių sąrašas tarp { ir }. Šis žymėjimas panašus į drobės programų įrašų žymėjimą, tačiau pavadinimas visada yra tarp dvigubųjų kabučių. Šis formatas nepalaiko įrašų, pagrįstų ryšiais „daugelis su vienu“. | { "First Name": "Fred", "Age": 21 } |
Stalas | Kableliais atskirtas įrašų sąrašas tarp [ ir ]. Šis formatas nepalaiko lentelių, pagrįstų ryšiais „vienas su daugeliu“. Naudokite parinktį JSONFormat.FlattenValueTables , kad pašalintumėte vieno stulpelio lentelių, kurių stulpelis pavadintas Reikšmė, įrašą. | [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] |
Du variantai | Dviejų parinkčių rinkinio Bulio logikos reikšmė true arba false, ne žyma, naudojama kažkam rodyti. Bulio logikos reikšmė naudojama, nes ji nepriklauso nuo kalbos. | false |
Hipersaitas, tekstas | Eilutė tarp dvigubųjų kabučių. Funkcija kairiniu brūkšniu išjungia įdėtąsias dvigubąsias kabutes, naujas eilutes pakeičia elementu „\n“ ir atlieka kitus standartinius „JavaScript“ pakeitimus. | "This is a string." |
Nurodykite pasirenkamąjį argumentą Format, kad galėtumėte kontroliuoti, kiek rezultatas yra skaitomas ir kaip tvarkomi nepalaikomi bei dvejetainiai duomenų tipai. Numatyta, kad išvestis yra kiek įmanoma kompaktiškesnė be nereikalingų tarpų ar naujų eilučių, o nepalaikomi duomenų tipai ir dvejetainiai duomenys neleidžiami. Galite derinti kelis formatus, jei nurodote operatorių .
JSONFormat išvardijimas | Aprašą |
---|---|
JSONFormat.Compact | Numatytoji reikšmė. Išvestis yra kiek įmanoma kompaktiškesnė be papildomų tarpų ar naujų eilučių. |
JSONFormat.FlattenValueTables | Kaip reikšmių lentelės žymėjimo rezultatas yra lentelė, kurioje yra įrašų, [1,2,3] kuriuose kiekvienas įrašas turi vieną stulpelį Reikšmė . JSON tas pats žymėjimas reiškia trijų skaičių masyvą. Kad būtų lengviau suderinti šiuos du dalykus, ši parinktis reikšmės lentelę sulygina Power Fx su JSON pritaikytu masyvu, o ne įrašų masyvu. |
JSONFormat.IndentFour | Siekiant pagerinti skaitomumą, išvestyje kiekvienas stulpelis ir įdėjimo lygis yra naujoje eilutėje, o kiekvienam įtraukos lygio naudojami keturi tarpai. |
JSONFormat.IncludeBinaryData | Rezultatai apima vaizdų, vaizdo įrašų ir garso įrašų stulpelius. Šis formatas gali labai padidinti rezultato dydį ir pabloginti programos našumą. |
JSONFormat.IgnoreBinaryData | Rezultatai neapima vaizdų, vaizdo įrašų ar garso įrašų stulpelių. Jei nenurodysite nei JSONFormat.IncludeBinaryData, nei JSONFormat.IgnoreBinaryData, funkcija sukuria klaidą, jei susiduria su dvejetainiais duomenimis. |
JSONFormat.IgnoreUnsupportedTypes | Nepalaikomi duomenų tipai yra leidžiami, tačiau į rezultatus jie nebus įtraukti. Numatyta, kad, esant nepalaikomiems duomenų tipams, generuojama klaida. |
Naudokite funkcijas ShowColumns ir DropColumns, kad galėtumėte valdyti, kurie duomenys įtraukiami į rezultatus, ir pašalinti nepalaikomus duomenų tipus.
Kadangi JSON gali naudoti daug atminties ir skaičiavimo pajėgumų, šią funkciją galite naudoti tik veikimo funkcijose. JSON rezultatą galite užfiksuoti kintamajame, kurį tada galite naudoti duomenų sraute.
Jei stulpelyje yra ir rodomas pavadinimas, ir loginis pavadinimas, rezultatuose pateikiamas loginis pavadinimas. Rodomi pavadinimai atspindi programos vartotojo kalbą ir todėl jie netinka duomenims į bendrą tarnybą perduoti.
Sintaksė
JSON( DataStructure [, Format] )
- Duomenų struktūra - būtina. Duomenų struktūra, kurią reikia konvertuoti į JSON. Palaikomos savo nuožiūra įdėtos lentelės, įrašai ir primityvios reikšmės.
- Formatas - neprivalomas. JSONFormat išvardijimas vertė. Numatytoji reikšmė yra JSONFormat.Compact, kuri neprideda naujų eilučių ar tarpų ir blokuoja dvejetainius duomenis bei nepalaikomus stulpelius.
Pavyzdžiai
Hierarchiniai duomenys
Įterpkite mygtuko valdiklį ir jo ypatybę OnSelect nustatykite kaip šią formulę.
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" ) )
Mygtuką pasirinkite laikydami nuspaudę klavišą „Alt”.
Naudojant šią duomenų struktūrą, sukuriamas rinkinys MiestaiPagalŠalį, kurį galite rodyti meniu Failas pasirinkdami Rinkiniai, tada – rinkinio pavadinimą.
Be to, šį rinkinį galite matyti pasirinkę Parametrai>Būsimos funkcijos>Įjungti formulės juostos rezultato rodinį, pasirinkę rinkinio pavadinimą formulės juostoje ir rodyklę žemyn prie rinkinio pavadinimo po formulės juosta.
Įterpkite kitą mygtuką ir jo ypatybę OnSelect nustatykite kaip šią formulę:
Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
Ši formulė visuotinį kintamąjį MiestaiPagalŠalįJSON nustato į JSON pavidalo MiestaiPagalŠalį.
Mygtuką pasirinkite laikydami nuspaudę klavišą „Alt”.
Įterpkite žymos valdiklį ir jo ypatybę Text nustatykite kaip šį kintamąjį.
CitiesByCountryJSON
Žymoje šis rezultatas rodomas vienoje eilutėje be tarpų, kad būtų galima perduoti tinklu:
[ { "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" } ]
Pakeiskite antro mygtuko formulę, kad išvestis būtų labiau skaitoma.
Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
Laikydami nuspaudę klavišą „Alt”, pasirinkite antrąjį mygtuką.
Žymoje rodomas labiau skaitomas rezultatas.
[ { "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" } ]
Vaizdai ir medija naudojant „base64“
Įtraukite valdiklį Image.
Į šį valdiklį taip pat įtraukta SampleImage.
Įtraukite mygtuko valdiklį ir jo ypatybę OnSelect nustatykite kaip šią formulę.
Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
Mygtuką pasirinkite laikydami nuspaudę klavišą „Alt”.
Įtraukite žymą ir jos ypatybę Text nustatykite kaip šį kintamąjį.
ImageJSON
Pagal poreikį pakeiskite valdiklio dydį ir sumažinkite šrifto dydį, kad būtų galima matyti didžiąją rezultato dalį.
Žymoje rodoma teksto eilutė, kurią užfiksavo funkcija JSON.
"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
Reikšmių lentelės
Ši formulė:
JSON( [1,2,3] )
Sukuria teksto eilutę [{"Reikšmė":1},{"Reikšmė":2},{"Reikšmė":3}].
Ta pati formulė su parinktimi JSONFormat.FlattenValueTables:
JSON( [1,2,3], JSONFormat.FlattenValueTables )
Sukuria teksto eilutę [1,2,3].
Atkreipkite dėmesį, kad parinktis FlattenValueTables neturi įtakos naudojant JSON su rinkiniais CityPopulations arba CitiesByCountry, nes šios lentelės nėra reikšmių lentelės. Lentelėje Reikšmė yra vienas stulpelis ir ji turi būti pavadinta "Reikšmė".