Функция за JSON

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

Генерира 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 или false. 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 }
Table Списък, разделен със запетая, между [ и ], на записи. Този формат не поддържа таблици, които се основават на релация едно към много. Използвайте опцията JSONFormat.FlattenValueTables, за да премахнете записа за таблици с единични колони с колона с име Value. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Две опции Булева стойност на двата варианта, вярно или невярно, а не етикета, който се използва за показване. Използва се булевата стойност, тъй като е независим от езика. false
Хипервръзка, Текст Низ между двойни кавички. Функцията избягва вградените двойни кавички с обратна черта, заменя новите редове с „\n" и прави други стандартни подмяна на JavaScript. "This is a string."

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

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

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

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

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

Синтаксис

JSON( DataStructure [, Format ] )

  • DataStructure – Задължително. Структурата на данните за конвертиране в JSON. Поддържат се таблици, записи и примитивни стойности, произволно вложени.
  • Format - Опционално. Стойност на номериране 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 с колекциите CityPopulation или CitiesByCountry , тъй като тези таблици не са таблици със стойности. Таблицата "Стойност" има една колона и трябва да се нарича "Стойност".