Делите путем


JSON функција

Односи се на: Цанвас апликације Апликације засноване на моделу Power Pages

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

Опис

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

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

Тип података Опис Пример резултата
Булову тачно или лажно. 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 вредност. Слова су мала. "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 }
Стол Списак записа, раздвојених зарезом између [ и ]. Овај формат не подржава табеле који се заснивају на један-према-више односима. Користите ЈСОНФормат .ФлаттенВалуеТаблес опцију да уклоните запис за табеле са једном колоном под називом Вредност. [ { "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. Табеле, записи и примитивне вредности су подржане, а и произвољно угнежђене.
  • Формат - Опционо. ЈСОНФормат енум вредност. Подразумевана вредност је ЈСОНФормат.Цомпацт , која не додаје нове линије или размаке и блокира бинарне податке и неподржане колоне.

Примери

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

  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Цоунтри јер ове табеле нису табеле вредности. Табела вредности има једну колону и мора се звати "Вредност".