שתף באמצעות


הפונקציה 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 או false. true
צבע מחרוזת המכילה את הייצוג ההקסדצימאלי בן 8 הספרות עבור הצבע. ייצוג זה הוא במבנה #rrggbbaa, ככאשר rr הוא הרכיב האדום, gg הוא ירוק, bb הוא כחול ו- aa הוא ערוץ האלפא. עבור ערוץ האלפא, 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, קבצי מדיה מקודדים במחרוזת. הפניות לאינטרנט שמשתמשות בערכות כתובות ה- URL‏ http:‎ או https:‎ אינן משתנות. הפניות לנתונים בינאריים בזיכרון מקודדים עם התבנית "data:mimetype;base64,...". נתונים בזיכרון כוללים תמונות שמשתמשים לוכדים באמצעות הפקד Camera‎ וכל הפניה אחרת עם ערכות כתובות ה- URL‏ appres:‎ ו- blob:‎. "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 כדי להסיר את הרשומה עבור טבלאות של עמודה בודדת שבהן שם העמודה הוא ערך. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
שתי אפשרויות ערך בוליאני של שתי האפשרויות, true או false, ולא התווית המשמשת עבור תצוגה. הערך הבוליאני משמש משום שהוא בלתי תלוי בשפה. false
היפר-קישור, טקסט מחרוזת בין מרכאות כפולות. הפונקציה מבטלת סימני מרכאות כפולות מוטבעים בעזרת קו נטוי הפוך, מחליפה קווים חדשים ב- "\n", ומבצעת החלפות סטנדרטיות אחרות של JavaScript. "This is a string."

ציין את ארגומנט תבנית האופציונלי כדי לשלוט במידת הקריאות של התוצאה ובאופן הטיפול בסוגי נתונים לא נתמכים ובינאריים. כברירת מחדל, הפלט הוא קומפקטי ככל שניתן וללא רווחים או שורות חדשות שאינם הכרחיים, וסוגי נתונים לא נתמכים ונתונים בינאריים אינם מורשים לשימוש. באפשרותך לשלב תבניות מרובות אם תציין את האופרטור &.

ספירת JSONFormat Description
JSONFormat.Compact ברירת מחדל. הפלט הוא קומפקטי ככל שניתן ללא תוספת רווחים או שורות חדשות.
JSONFormat.FlattenValueTables כטבלת ערכים, [1,2,3] סימון מביא לטבלה המכילה רשומות שבהן לכל רשומה יש עמודת ערך יחידה. ב- JSON, אותו סימון מייצג מערך של שלושה מספרים. כדי להקל על יכולת פעולה הדדית בין השניים, אפשרות זו משטחת טבלת ערכים של Power Fx למערך ידידותי ל- JSON במקום למערך של רשומות.
JSONFormat.IndentFour כדי לשפר את הקריאות, הפלט מכיל שורה חדשה עבור כל עמודה ורמת קינון ומשתמש בארבעה רווחים עבור כל רמת הזחה.
JSONFormat.IncludeBinaryData התוצאה כוללת עמודות תמונה, וידאו וקטע שמע. תבנית זו עשויה להגדיל באופן דרמטי את גודל התוצאה ולפגוע בביצועי היישום שלך.
JSONFormat.IgnoreBinaryData התוצאה אינה כוללת עמודות תמונה, וידאו או קטע שמע. אם לא צויין JSONFormat.IncludeBinaryData או SONFormat.IgnoreBinaryData, הפונקציה תייצר שגיאה אם תיתקל בנתונים בינאריים.
JSONFormat.IgnoreUnsupportedTypes סוגי נתונים לא נתמכים מורשים לשימוש, אבל התוצאה לא תכלול אותם. כברירת מחדל, סוגי נתונים לא נתמכים מייצרים שגיאה.

השתמש בפונקציות ShowColumns ו- DropColumns כדי לשלוט בנתונים שהתוצאה כוללת וכדי להסיר סוגי נתונים לא נתמכים.

משום ש- JSON עשויה להיות הן אינטנסיבית מבחינת זיכרון והן אינטנסיבית מבחינת מיחשוב, באפשרותך להשתמש בפונקציה זו רק בפונקציות של אופן פעולה. באפשרותך ללכוד את התוצאה מ- JSON אח משתנה, אשר באפשרותך להשתמש בו לאחר מכן בזרימת נתונים.

אם לעמודה יש גם שם תצוגה וגם שם לוגי, התוצאה מכילה את השם הלוגי. שמות תצוגה משקפים את שפת היישום המשתמש ולפיכך הם אינם מתאימים להעברת נתונים אל שירות משותף.

תחביר

JSON( DataStructure [, Format ] )

  • DataStructure – נדרש. מבנה הנתונים להמרה ל- JSON. טבלאות, רשומות וערכים פרימיטיביים נתמכים, ומקוננים באופן שרירותי.
  • Format - אופציונלי. ערך ספירת JSONFormat. ערך ברירת המחדל הוא JSONFormat.Compact, אשר אינו מוסיף שורות חדשות או רווחים וחוסם נתונים ועמודות בלתי נתמכות.

דוגמאות

נתונים הירארכיים

  1. הוסף פקד Button‎ והגדר את מאפיין 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.

    האוסף ערים לפי מדינה נוצר עם מבנה נתונים זה, אשר ניתן להציג על-ידי בחירה באפשרות אוספים בתפריט קובץ ולאחר מכן בחירת שם האוסף.

    אוסף 'ערים לפי מדינה'.

    תוכל גם להציג את האוסף הזה על-ידי בחירה באפשרויות הגדרות>תכונות עתידיות>אפשר תצוגת תוצאות של שורת הנוסחאות, בחירת שם האוסף בשורת הנוסחאות ולאחר מכן בחירה בחץ למטה לצד שם האוסף מתחת לשורת הנוסחאות.

    אוסף בתצוגת התוצאות של שורת הנוסחאות.

  3. הוסף לחצן נוסף, והגדר את מאפיין OnSelect שלו לנוסחה זו:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    נוסחה זו מגדירה את המשתנה הכללי CitiesByCountryJSON לייצוג ה- JSON עבור CitiesByCountry.

  4. בחר את הלחצן תוך כדי לחיצה על המקש Alt.

  5. הוסף פקד Label‎ והגדר את מאפיין Text‎ שלו למשתנה זה.

    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‎.

    לפקד זה מצורפת תמונה לדוגמה.

  2. הוסף פקד Button‎ והגדר את מאפיין 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] )

מייצרת את מחרוזת הטקסט [{"Value":1},{"Value":2},{"ערך":3}].

אותה נוסחה עם אפשרות JSONFormat.FlattenValueTables:

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

מייצרת את מחרוזת הטקסט [‏‎‏1‏,2‏,3‏‎].

יש לשים לב שלאפשרות FlattenValueTables אין השפעה בעת שימוש ב- JSON עם האוספים CityPopulations או CitiesByCountry מכיוון שטבלאות אלו אינן טבלאות ערך. לטבלת ערך יש עמודה אחת והיא חייבת לקבל את השם "ערך".