Споделяне чрез


Функция за JSON

Отнася се за: Приложения за платно Приложения, управлявани от модел Power Pages

Генерира JSON текстов низ за таблица, запис или стойност.

Описание

Функцията JSON връща JavaScript Object Notation (JSON) представяне на структура от данни като текст, така че да е подходяща за съхраняване или предаване в мрежа. [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf и IETF RFC 8259 описват формата, който е широко използван от JavaScript и други езици за програмиране.

Приложенията за платно поддържат типове данни, които тази таблица съдържа списък с подробности за тяхното представяне на текст:

Тип на данните Описание Пример за резултат
Булева вярно или невярно. true
Цвят Низ, който съдържа 8-цифреното шестнадесетично изображение за цвета. Това представяне приема формат # rrggbbaa, където RR е червеният компонент, GG е зелен, bb е синьо и аа е алфа каналът. За алфа канала, 00 е напълно прозрачен и ff е напълно непрозрачен. Можете да предадете низ на ColorValue функция. "#102030ff"
Валута Номер, който използва подходящия десетичен разделител за езика на потребителя. При необходимост се използва научна нотация. 1.345
Дата Низ, който съдържа датата в ISO 8601 yyyy-mm-dd формат. "2019-03-31"
ДатаЧас Низ, който съдържа дата / час по ISO 8601. Стойностите за дата / час са в UTC, както показва завършекът „Z“. "2019-03-31T22:32:06.822Z"
GUID Низ, който съдържа GUID стойността. Буквите са малки букви. "751b58ac-380e-4a04-a925-9f375995cc40"
Имидж, Медии Ако е посочен JSONFormat.IncludeBinaryData , мултимедийните файлове се кодират в низ. Уеб препратките, които използват http: или https: URL схемата, не се променят. Препратките към бинарните данни в паметта са кодирани с "data:mimetype;base64,..." формат. Данните в паметта включват изображения, които потребителите заснемат с помощта на Камера контрола и всякакви други препратки към схемите appres: и blob: URL. "data:image/jpeg;base64,/9j/4AA..."
Номер Номер, който използва подходящия десетичен разделител за езика на потребителя. При необходимост се използва научна нотация. 1.345
Набор от опции Числова стойност на избора, а не етикетът, който се използва за показване. Използва се числовата стойност, тъй като е независим от езика. 1001
Час Низ, който съдържа ISO 8601 hh:mm:ss.fff формат. "23:12:49.000"
Запис Списък, разделен със запетая, между { и }, на полетата и техните стойности. Тази нотация прилича на тази за записи в приложения за платно, но името винаги е между двойни кавички. Този формат не поддържа записи, които се основават на взаимоотношения много към един. { "First Name": "Fred", "Age": 21 }
Маса Списък, разделен със запетая, между [ и ], на записи. Този формат не поддържа таблици, които се основават на релация едно към много. Използвайте опцията JSONFormat.FlattenValueTables , за да премахнете записа за таблици с една колона с име Value. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Два варианта Булева стойност на двата варианта, вярно или невярно, а не етикета, който се използва за показване. Използва се булевата стойност, тъй като е независим от езика. false
Хипервръзка, текст Низ между двойни кавички. Функцията избягва вградените двойни кавички с обратна черта, заменя новите редове с „\n" и прави други стандартни подмяна на JavaScript. "This is a string."

Посочете незадължителния аргумент формат за контрол на това, колко е четим резултатът и как се обработват неподдържани и бинарни типове данни. По подразбиране изходът е възможно най-компактен, без излишни интервали или нови редове, а неподдържаните типове данни и двоичните данни не са позволени. Можете да комбинирате няколко формата, ако посочите оператора & .

Номериране JSONFormat Описание
JSONFormat.Compact По подразбиране. Изходът е възможно най-компактен, без добавени интервали или нови редове.
JSONFormat.FlattenValueTables Като таблица "Стойност" [1,2,3] нотацията води до таблица, съдържаща записи, където всеки запис има една колона "Стойност". В JSON същата тази нотация представлява масив от три числа. За да улесни оперативната съвместимост между двете, тази опция изравнява таблицата Power Fx със стойности до JSON удобен масив вместо масив от записи.
JSONFormat.IndentFour За да се подобри четимостта, изходът съдържа нов ред за всяка колона и ниво на влагане и използва четири интервала за всяко ниво на отстъп.
JSONFormat.IncludeBinaryData Резултатът включва колони за изображения, видео и аудиоклипове. Този формат може драстично да увеличи размера на резултата и да влоши производителността на приложението ви.
JSONFormat.IgnoreBinaryData Резултатът не включва колони за изображения, видео или аудиоклипове. Ако не посочите нито JSONFormat.IncludeBinaryData , нито JSONFormat.IgnoreBinaryData, функцията издава грешка, ако срещне двоични данни.
JSONFormat.IgnoreUnsupportedTypes Неподдържани типове данни са позволени, но резултатът няма да ги включва. По подразбиране неподдържаните типове данни създават грешка.

Използвайте ShowColumns and DropColumns функции за контрол на кои данни включва резултата и премахване на неподдържани типове данни.

Тъй като JSON може да бъде както памет, така и изчисляване, можете да използвате тази функция само в функции на поведение. Можете да уловите резултата от JSON в променлива, които след това можете да използвате в потока от данни.

Ако една колона има както име на дисплей, така и логическо име, резултатът съдържа логическото име. Показваните имена отразяват езика на потребителя на приложението и следователно са неподходящи за трансфер на данни към обща услуга.

Синтаксис

JSON( Структура на данни[, Формат ] )

  • DataStructure – Задължително. Структурата на данните за конвертиране в JSON. Поддържат се таблици, записи и примитивни стойности, произволно вложени.
  • Формат - По избор. JSONFormat стойност на изброяване. Стойността по подразбиране е JSONFormat.Compact, която не добавя нови редове или интервали и блокира двоични данни и неподдържани колони.

Примери

Йерархични данни

  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 се създава с тази структура на данните, която можете да покажете, като изберете Колекции в менюто Файл и след това изберете името на колекцията.

    Колекция CitiesByCountry.

    Можете също да покажете тази колекция, като изберете Настройки>Предстоящи функции>Активиране на изгледа с резултати от лентата с формули, като изберете името на колекцията в лентата с формули и след това изберете стрелката надолу до името на колекцията под лентата с формули.

    Колекция в изгледа на резултатите на лентата с формули.

  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. Добавете етикет и задайте свойството му Текст на тази променлива.

    ImageJSON
    
  5. Преоразмерете контрола и намалете размера на шрифта според нуждите, за да покажете по-голямата част от резултата.

    Етикетът показва текстовия низ, който JSON функция улови.

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

Таблици със стойности

Тази формула:

JSON( [1,2,3] )

създава текстовия низ [{"Стойност":1},{"Стойност":2},{"Стойност":3}].

Същата формула с опцията JSONFormat.FlattenValueTables:

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

Създава текстовия низ [1,2,3].

Имайте предвид, че опцията FlattenValueTables няма влияние при използване на JSON с колекциите CityPopulations или CitiesByCountry , тъй като тези таблици не са таблици със стойности. Таблицата със стойности има една колона и трябва да бъде наречена "Стойност".