שתף דרך


ParseJSON פונקציה

חל על: אפליקציות Canvas אפליקציות Copilot Studio מונחות מודלים אפליקציות Power Platform CLI Dataverse פונקציות Power Pages

פירוש מחרוזת JSON והחזרת ערך דינאמי או ערך מסוים מסוים אם מסופק סוג.

חשוב

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 }
  1. הנוסחה הבאה מחזירה את הטקסט text value:
    Text( ParseJSON( JsonString ).parent.child )
    
  2. הנוסחה הבאה מחזירה את מספר 567:
    Value( ParseJSON( JsonString ).number )
    

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

{ "0": { "child-field": "text value" } }
  1. הנוסחה הבאה מחזירה את הטקסט text value:
    Text( ParseJSON( JsonString ).'0'.'child-field' )
    

ריקים

בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString

{ "text": "text value" , "number": 567, "empty": null }
  1. ניסיון לגשת לשדות שאינם קיימים מחזיר Blank(). הנוסחה הבאה מחזירה true:
    IsBlank( Text( ParseJSON( JsonString ).parent.child ) )
    
  2. ערכי JSONnull נחשבים Blank(). הנוסחה הבאה מחזירה true:
    IsBlank( Text( ParseJSON( JsonString ).empty ) )
    

מערכים פשוטים

בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString

{ "array": [1, 2, 3] }
  1. גישה למספר השני בטבלת הערכים הדינאמיים של שדה המערך הכוללת עמודה בודדת והמרתם למספר באמצעות הפונקציה Value() מחזירה :2
    Value( Index( ParseJSON( JsonString ).array, 2 ) )
    
  2. המרת טבלת העמודה ה בודדת של ערכים דינאמיים בשדה המערך, לטבלת מספרים של עמודה בודדת { Value: 1 }, { Value: 2 }, { Value: 3 }:
    ForAll( ParseJSON( JsonString ).array, Value( ThisRecord ) )
    

מערכי רשומות

בהינתן מחרוזת ה-JSON הבאה במשתנה בשם JsonString

{ "array": [
    { "id": 1, "name": "One"},
    { "id": 2, "name": "Two"}
    ] }
  1. ניתן לבצע המרה לטבלת רשומות מוקלדה ישירות באמצעות ForAll()ThisRecord.[fieldname] על-ידי שימוש כדי לגשת לשדות דינאמיים ולהמיר אותן לסוגים ספציפיים:

    ForAll( ParseJSON( JsonString ).array, { id: Value(ThisRecord.id), name: Text(ThisRecord.name) })
    

מערך לטבלה

  1. המרת ערכים דינאמיים לטבלה באמצעות הפונקציה 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 )