הערה
גישה לעמוד זה דורשת אישור. אתה יכול לנסות להיכנס או לשנות תיקיות.
גישה לעמוד זה דורשת אישור. אתה יכול לנסות לשנות מדריכים.
חל על: אפליקציות
Canvas אפליקציות Copilot Studio
מונחות מודלים אפליקציות
Power Platform CLI
Dataverse פונקציות
Power Pages
פירוש מחרוזת JSON והחזרת ערך דינאמי או ערך מסוים מסוים אם מסופק סוג.
חשוב
- השימוש בארגומנט השני להמרה ParseJSON לאובייקט מסוים הוא תכונה ניסויית.
- תכונות ניסיוניות אינן מיועדות לשימוש בייצור והפונקציונליות שלהן עשויה להיות מוגבלת. תכונות אלו זמינות לפני הפרסום הרשמי כך שניתן לקבל גישה מוקדמת ולספק משוב. מידע נוסף: הכרת תכונות ניסיוניות, תכונות Preview ותכונות שיצאו משימוש באפליקציות בד ציור
- אופן הפעולה המתואר במאמר זה זמין רק כאשר התכונה הניסיונית של פונקציות שמוגדרות על-ידי המשתמש בהגדרות > תכונות קרובות > ניסיוני מופעלת (היא מושבתת כברירת מחדל).
- המשוב שלך חשוב לנו. אנו מבקשים ממך לספר מה דעתך בפורמים של הקהילת התכונות הניסיוניות של Power Apps.
Description
הפונקציה ParseJSON מנתחת מחרוזת JSON חוקית ומחזירה ערך דינאמי המייצג את מבנה JSON.
לחלופין, השתמש בארגומנט השני כדי להמיר את ה- JSON לאובייקט מסווג שניתן להשתמש בו ישירות בנוסחאות Power Fx. זה הופך את התוצאה לקלה יותר לצריכה מכיוון שהמרות ואילוץ של נקודת השימוש אינן נדרשות עוד. ה- JSON הלא מסווג ממופה לסוג עם הכללים הבאים:
- עמודות עם סוג שלא קיים ב- JSON יכללו ערך ריק.
- המערכת תתעלם מעמודות ב- JSON שלא קיימות בסוג.
- בעמודות שנמצאות גם בסוג וגם ב- JSON, ערך JSON חייב להיות ניתן לכפייה לכתב.
הפונקציה ParseJSON יכולה להחזיר שגיאות אם הטקסט אינו JSON חוקי בהתאם לתבנית JavaScript Object Notation (JSON) המתוארת ב- ECMA-404 וב- IETF RFC 8259.
תחביר
ParseJSON( JSONString [ , Type ] )
- JSONString - נדרש. מבנה JSON מיוצג כטקסט.
- סוג - אופציונלי. הגדרת הסוג Power Fx עבור מבנה JSON. ללא ארגומנט זה, ParseJSON החזרת ערך דינאמי; באמצעותו הפונקציה מחזירה ערך מסוים שהוקלדה.
המרת ערכים דינאמיים
ללא הארגומנט השני, החזרת ParseJSON ערך דינאמי המחייב המרה מפורשת של ערכי שדה בסוגי נתונים נתמכים. הטבלה הבאה מפרטת את סוגי הנתונים ב- Power Apps וסוג נתוני ה- JSON התואם וכיצד להמיר אותו.
| סוג נתונים | דוגמאות JSON | Description | המרה לדוגמה |
|---|---|---|---|
| בוליאני | { "bool": true } |
בוליאני הוא סוג מפורש ב- JSON וניתן להמירו ישירות. | Boolean( ParseJSON("{ ""bool"": true }").bool ) |
| Color | { "color": "#102030" }{ "r": 255, "g": 128, "b": 0, "a": 0.5 } |
אין סוג צבע ב-JSON. ניתן ליצור ערכי צבע ממספרים שלמים מסוג RGBA או מחרוזות הקסדצימליות. |
ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color ) With( { uo: ParseJSON( "{ ""r"": 255, ""g"": 128, ""b"": 0, ""a"": 0.5 }" ) }, RGBA( Value( uo.r ), Value( uo.g ), Value( uo.b ), Value( uo.a ) ) ) |
| מספר, מטבע | { "numbervalue": 123.5 } |
מספרים מיוצגים ישירות ב-JSON עם נקודה ( . ) כמפריד העשרוני. | Value( ParseJSON("{ ""numbervalue"": 123.5 }").numbervalue ) |
| תאריך, תאריך ושעה, שעה | { "start": "2022-05-10" }{ "start": "23:12:49.000" } |
ל-JSON אין סוג תאריך או שעה ולכן יכול לייצג רק תאריכים ושעות כמחרוזות. ניתן להמיר ערך דינאמי ישירות ממחרוזת בתבנית ISO 8601 לתאריך, שעה או תאריך/שעה. עבור פורמטים אחרים, תחילה יש להמיר את זה ה- JSON לטקסט באמצעות הפונקציה Text() ולאחר מכן להעביר אותם לתוך הפונקציה ()DateValue, ()TimeValue או ()DateTimeValue שכברירת מחדל תשתמש בשפת ההגדרות של המשתמש הנוכחי כדי לפרש את התאריך והשעה. |
DateValue( ParseJSON("{ ""appointment"": ""2022-05-10"" }").appointment ) DateValue( Text( ParseJSON("{ ""appointment"": ""May 5, 2022"" }").appointment ) |
| GUID | { "id": "123e4567-e89b-12d3-a456-426655440000" } |
ל-JSON אין סוג נתונים עבור מזהי GUId כך שניתן לייצג אותם רק כמחרוזות. | GUID( ParseJSON("{ ""id"": ""123e4567-e89b-12d3-a456-426655440000"" }").id ) |
| היפר-קישור, תמונה, מדיה | { "URI": "https://northwindtraders.com/logo.jpg" } |
סוגי נתונים אלה הם מסוג טקסט, וניתן להמירם לטקסט ולאחר מכן להשתמש בהם Power Apps. | Text( ParseJSON("{ ""URI"": ""https://northwindtraders.com/logo.jpg"" }"). URI ) |
| אפשרות בחירה | { "status": 1 }{ "status": "Closed" } |
בחירות ושתי אפשרויות מוצגים כמחרוזות מקומיות, שמגובים על ידי מספר . פונקציית ה- JSON() מסדרת בחירה למספר הגיבוי שלה. אין המרה ישירה ממספר או מחרוזת לבחירה, אך ניתן להשתמש בפונקציות Switch() או If() על ערך הטקסט או המספר. | Switch( Value( ParseJSON( "{ ""status"": 1 }" ).status ), 0, Status.Open, 1, Status.Closed ) |
| רשומה | { "field": "value" } |
אין המרה ישירה מאובייקט JSON למבנה רשומה, אך ניתן לאחזר שדות בודדים מהערך הדינאמי כדי ליצור רשומה. | { field: Text( ParseJSON( "{ ""field"": ""value"" }" ).field ) } |
| הפניה לרשומה | לא זמין | הפניות לרשומות הן ייחודיות למקורות נתונים ולא ניתן להפוך אותן לסידרתיות או ללא סידרתיות. ניתן להשתמש בערכי שדות המייצגים מפתחות ייחודיים ב-JSON כדי לזהות רשומות שניתן לבדוק לאחר מכן. | לא זמין |
| Table | [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ][1, 2, 3] |
JSON יכול להכיל מערכים, אותם ניתן להמיר לטבלאות. ערכים אלו יכולים להיות מערכים של רשומות, או מערכים של ערכים שהם למעשה טבלאות בעלות עמודה אחת. ParseJSON() ניתן להמיר מערכים לטבלת עמודה בודדת של ערכים דינאמיים בלבד, ובאפשרותך להשתמש בהם כך או להמיר אותם לטבלאות רשומות מוקלדה באמצעות ForAll(). | ForAll( Table( ParseJSON( "[ { ""id"": 1, ""name"": ""one"" }, { ""id"": 2, ""name"": ""two"" } ]" ) ), { id: Value(ThisRecord.Value.id), name: Text(ThisRecord.Value.name) } ) |
| טקסט | { "stringField": "this is text" } |
טקסט הוא סוג מפורש ב- JSON וניתן להמירו ישירות. | Text( ParseJSON( "{ ""stringField"": ""this is text"" }").stringField ) |
| שתי אפשרויות | { "available": true }{ "available": "Yes" } |
שתי אפשרויות מוצגים כמחרוזות מקומיות, המגובות על ידי בוליאני . הפונקציית JSON() מסדרת שתי אפשרויות לערך הבוליאני שלה. אין המרה ישירה מבוליאני, מספר או מחרוזת לשתי אפשרויות, אך ניתן להשתמש בפונקציות Switch() או If() על ערך של הטקסט, המספר או על הערך הבוליאני. | Switch( Boolean( ParseJSON( "{ ""available"": true }" ).available ), false, Availability.No, true, Availability.Yes ) |
דוגמאות
גישה לשדות נתונים
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "parent": { "child": "text value" }, "number": 567 }
- הנוסחה הבאה מחזירה את הטקסט
text value:Text( ParseJSON( JsonString ).parent.child ) - הנוסחה הבאה מחזירה את מספר
567:Value( ParseJSON( JsonString ).number )
במקרה ששם שדה מורכב משם מזהה לא חוקי, אתה יכול להכניס את שמות השדות לתוך גרשים בודדים.
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "0": { "child-field": "text value" } }
- הנוסחה הבאה מחזירה את הטקסט
text value:Text( ParseJSON( JsonString ).'0'.'child-field' )
ריקים
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "text": "text value" , "number": 567, "empty": null }
- ניסיון לגשת לשדות שאינם קיימים מחזיר Blank(). הנוסחה הבאה מחזירה
true:IsBlank( Text( ParseJSON( JsonString ).parent.child ) ) - ערכי JSON
nullנחשבים Blank(). הנוסחה הבאה מחזירהtrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
מערכים פשוטים
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "array": [1, 2, 3] }
- גישה למספר השני בטבלת הערכים הדינאמיים של שדה המערך הכוללת עמודה בודדת והמרתם למספר באמצעות הפונקציה Value() מחזירה :
2Value( Index( ParseJSON( JsonString ).array, 2 ) ) - המרת טבלת העמודה ה בודדת של ערכים דינאמיים בשדה המערך, לטבלת מספרים של עמודה בודדת
{ Value: 1 }, { Value: 2 }, { Value: 3 }:ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
מערכי רשומות
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
ניתן לבצע המרה לטבלת רשומות מוקלדה ישירות באמצעות ForAll()
ThisRecord.[fieldname]על-ידי שימוש כדי לגשת לשדות דינאמיים ולהמיר אותן לסוגים ספציפיים:ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
מערך לטבלה
- המרת ערכים דינאמיים לטבלה באמצעות הפונקציה Table() התוצאה היא טבלה של עמודה יחידה של ערכים דינאמיים . לאחר מכן יש לגשת לאובייקט באמצעות העמודה
Value(יחידה) וההמרה תהיה לסוגים כפי שהוסבר קודם.
בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString
{ "array": [1, 2, 3] }
Table() מחזיר טבלת עמודה בודדת של ערכים דינאמיים עם ערך של עמודה יחידה עבור מספר במערך...
Set(untypedTable, Table( ParseJSON( JsonString ).array ));
Value( Index(untypedTable, 1).Value.Value )
```
Given the following JSON string in a variable named `JsonString`
```JSON
{ "array": [
{ "id": 1, "name": "One"},
{ "id": 2, "name": "Two"}
] }
Table() מחזיר טבלה של עמודה בודדת של ערכים דינאמיים המייצגת כל אובייקט json במערך.
Set(untypedTable, Table( ParseJSON( JsonString ).array ) );
Text( Index(untypedTable, 1).Value.name )