Делите путем


JSON функција

Важи за: Цанвас апликације Модел-дривен апликације Power Pages

Генерише JSON текстуалну ниску за табелу, запис или вредност.

Опис

Функција JSON враћа JavaScript Object Notation (JSON) репрезентацију структуре података као текста, тако да је погодна за складиштење или преношење преко мреже. [ЕЦМА-404] ( https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf и ИЕТФ РФЦ 8259 описују формат, који увелико користе ЈаваСцрипт и други програмски језици.

Апликације са подлогом подржавају типове података које ова табела наводи, уз детаље о њиховим репрезентацијама текста:

Тип података Опис Пример резултата
Булов true или false. true
Боја Ниска која садржи осмоцифрену хексадецималну репрезентацију боје. Ова репрезентација има формат #rrggbbaa, где је rr црвена компонента, gg је зелена, bb је плава, а aa је алфа канал. За алфа канал, 00 је потпуно транспарентан, а ff је у потпуности непрозиран. Можете пренети ниску у функцију ColorValue. "#102030ff"
Валута Број који користи одговарајући знак за раздвајање децимала за језик корисника. Научни запис се користи ако је потребно. 1.345
Датум Низ који садржи датум у ISO 8601 гггг-мм-дд формату. "2019-03-31"
Датум и време Ниска која садржи ISO 8601 датум/време. Вредности датум/време су у UTC, као што означава завршетак „Z“. "2019-03-31T22:32:06.822Z"
GUID Ниска која садржи GUID вредност. Слова су мала. "751b58ac-380e-4a04-a925-9f375995cc40"
Слика, медији Ако је наведен ЈСОНФормат.ИнцлудеБинарyДата , медијске датотеке се кодира у ниску. Веб референце које користе http: или https: шему URL адресе се не мењају. Референце на бинарне податке у меморији су кодиране помоћу формата „data:mimetype;base64,...“. Подаци у меморији укључују слике које корисници снимају користећи контролу Камера и било које друге референце са appres: и blob: шемама URL адресе. "data:image/jpeg;base64,/9j/4AA..."
Број Број који користи одговарајући знак за раздвајање децимала за језик корисника. Научни запис се користи ако је потребно. 1.345
Скуп опција Нумеричка вредност избора, а не ознака која се користи за приказ. Нумеричка вредност се користи јер је њен језик независан. 1001
Време Ниска која садржи ISO 8601 у формату сс:мм:сс.ссс. "23:12:49.000"
Запис Листа поља и њихових вредности, раздвојена зарезима између { и }. Овај облик подсећа на облик записа у апликацијама подлоге, али име је увек између двоструких наводника. Овај формат не подржава записе који се заснивају на више-према-један односима. { "First Name": "Fred", "Age": 21 }
Table Списак записа, раздвојених зарезом између [ и ]. Овај формат не подржава табеле који се заснивају на један-према-више односима. Користите опцију ЈСОНФормат.ФлаттенВалуеТаблес да бисте уклонили запис за табеле са једном колоном са колоном под именом Вредност. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Две опције Логичка вредност од две опције, тачно или нетачно, а не ознака која се користи за приказ. Логичка вредност се користи јер је њен језик независан. false
Хипервеза, Текст Ниска између двоструких наводника. Функција избегава уграђене двоструке наводнике помоћу косе црте уназад, а нове црте замењује са „\n“, и врши друге стандардне замене JavaScript-а. "This is a string."

Наведите опционални аргумент Формат да бисте контролисали колико је резултат читљив и како се рукује неподржаним и бинарним врстама података. Подразумевано, излаз је што компактнији, без непотребних размака или нових линија, а неподржани типови података и бинарни подаци нису дозвољени. Ако наведете оператор&оператор, можете комбиновати више формата.

Нумеричка вредност JSONFormat Опис
ЈСОНФормат.Цомпацт Подразумевано. Излаз је што компактнији без доданих размака или нових линија.
ЈСОНФормат.ФлаттенВалуеТаблес Као табела "Вредност", нотација [1,2,3] резултира табелом која садржи записе у којима сваки запис има једну колону "Вредност ". У ЈСОН-у, та иста нотација представља низ од три броја. Да би се олакшала интероперабилност између њих, ова опција спљошти Power Fx табелу вредности на ЈСОН пријатељски низ уместо низа записа.
ЈСОНФормат.ИндентФоур Да би се побољшала читљивост, излазна вредност садржи нову линију за сваку колону и ниво гнежђења, а и користи четири размака за сваки ниво увлачењa.
ЈСОНФормат.ИнцлудеБинарyДата Резултат укључује колоне за слике, видео и аудио снимке. Овај формат може драматично повећати величину резултата и деградирати перформансе апликације.
ЈСОНФормат.ИгнореБинарyДата Резултат не укључује колоне за слике, видео нити аудио снимке. Ако не наведете ни ЈСОНФормат.ИнцлудеБинарyДата ни ЈСОНФормат.ИгнореБинарyДата , функција ће направити грешку ако наиђе на бинарне податке.
ЈСОНФормат.ИгнореУнсуппортедТyпес Неподржани типови података су дозвољени, али резултат их неће укључивати. Подразумевано, неподржани типови података производе грешку.

Користите функције ShowColumns и DropColumns да бисте контролисали које податке резултат укључује и уклањали неподржане типове података.

Због тога што JSON може бити меморија, а може и да рауна интензивно, ову функцију можете користити само у функцијама понашања. Резултат можете да снимите из JSON у променљиву, коју затим можете да користите у току података.

Ако колона садржи и име за приказ и логичко име, резултат садржи логичко име. Имена за приказ одражавају језик корисника апликације и због тога су неприкладна за пренос података на заједничку услугу.

Синтакса

JSON( DataStructure [, Format ] )

  • DataStructure – Обавезно. Структура података за конвертовање у JSON. Табеле, записи и примитивне вредности су подржане, а и произвољно угнежђене.
  • Format – Опционално. JSONFormat нумеричка вредност. Подразумевана вредност је ЈСОНФормат.Цомпацт , који не додаје нове линије или размаке и блокира бинарне податке и неподржане колоне.

Примери

Хијерархијски подаци

  1. Уметните контролу Дугме и подесите њено својство OnSelect према овој формули.

    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 притиснут, изаберите дугме.

    Колекција CitiesByCountry се креира са овом структуром података коју можете приказати избором Колекције у менију Датотека, а затим изаберите назив колекције.

    ЦитиесБyЦоунтрy колекција.

    Ову колекцију такође можете приказати ако изаберете мени Поставке>Предстојеће функције>Омогући приказ резултата на траци са формулама, ако изаберете назив колекције на траци са формулама, а затим одаберете стрелицу надоле поред назива колекције испод траке са формулама.

    Колекција у приказу резултата у поље за формулу.

  3. Уметните друго дугме и подесите његово својство OnSelect према овој формули:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Ова формула поставља глобалну променљиву CitiesByCountryJSON на представљање JSON за CitiesByCountry.

  4. Док држите тастер Alt притиснут, изаберите дугме.

  5. Уметните контролу Ознака, а затим подесите њено својство Текст на ову променљиву.

    CitiesByCountryJSON
    

    Ознака приказује овај резултат, све на једној линији без размака, погодну за пренос путем мреже:

    [
      {
        "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. Промените формулу другог дугмета да би резултат био читљивији.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Док држите тастер Alt притиснут, изаберите друго дугме.

    Ознака приказује читљивији резултат.

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

  1. Додајте контролу Image.

    Ова контрола доноси SampleImage са њим.

  2. Додајте контролу Дугме и подесите њено својство OnSelect према овој формули.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Док држите тастер Alt притиснут, изаберите дугме.

  4. Додајте ознаку и подесите њено својство Text према овој променљивој:

    ImageJSON
    
  5. Промените величину контроле и смањите величину фонта према потреби да бисте приказали већину резултата.

    Ознака приказује текстуални ниску коју је ухватила функција JSON.

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

Табеле вредности

Ова формула:

JSON( [1,2,3] )

даје текстуалну ниску [ {"Вредност":1 }, {"Вредност":2 }, {"Вредност":3 }].

Иста формула са опцијом ЈСОНФормат.ФлаттенВалуеТаблес:

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

даје текстуалну ниску [1,2,3].

Имајте на крају да опција ФлаттенВалуеТаблес нема утицаја када користите ЈСОН са ЦитyПопулатионс или ЦитиесБyЦоунтрy колекцијама јер ове табеле нису табеле вредности. Табела "Вредност" има једну колону и мора се звати "Вредност".