שתף באמצעות


הפונקציה ParseJSON

חל על: יישומי בד ציור יישומים מונחי דגמים Power Pages Power Platform CLI

מפרש מחרוזת JSON ומחזיר אובייקט לא מסווג.

Description

הפונקציה ParseJSON תנתח מחרוזת JSON חוקית ותחזיר אובייקט לא מסווג המייצג את מבנה JSON.

הפונקציה ParseJSON עשויה להחזיר שגיאות אם הטקסט אינו JSON חוקי לפי פורמט JavaScript Object Notation ‏(JSON) המתואר ב- ECMA-404 וב- IETF RFC 8259.

תחביר

ParseJSON( JSONString )

  • JSONString - נדרש. מבנה JSON מיוצג כטקסט.

המרת סוג נתונים של אובייקט לא מסווג

ParseJSON מחזירה אובייקט לא מסווג דבר שדורש המרה מפורשת של ערכי שדות בסוגי נתונים נתמכים. הטבלה הבאה מפרטת את סוגי הנתונים ב- Power Apps וסוג נתוני ה- JSON התואם וכיצד להמיר אותו.

סוג נתונים דוגמאות JSON תיאור‬‏‫‬ המרה לדוגמה
בוליאני‬‬ { "bool": true } בוליאני הוא סוג מפורש ב- JSON וניתן להמירו ישירות. בוליאני( ParseJSON("{ ""bool"": true }").bool )
Color { "color": "#102030" }
{ "r": 255, "g": 128, "b": 0, "a": 0.5 }
אין סוג צבע ב-JSON. ניתן ליצור ערכי צבע ממספרים שלמים מסוג RGBA או מחרוזות הקסדצימליות. ColorValue( ParseJSON( "{ ""color"": ""#102030"" }" ).color )
עם( { 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"" ‏‏‎:‏ ""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"": ""ערך""} "‏ ).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), שם: Text(ThisRecord.Value.name) })
טקסט { "stringField": "this is text" } טקסט הוא סוג מפורש ב- JSON וניתן להמירו ישירות. Text(‏ ParseJSON( "{ ‏""stringField"": ""זהו טקסט""} ‏").stringField )
שתי אפשרויות { "available": true }
{ "available": "Yes" }
שתי אפשרויות מוצגים כמחרוזות מקומיות, המגובות על ידי בוליאני . הפונקציית JSON() מסדרת שתי אפשרויות לערך הבוליאני שלה. אין המרה ישירה מבוליאני, מספר או מחרוזת לשתי אפשרויות, אך ניתן להשתמש בפונקציות Switch() או If() על ערך של הטקסט, המספר או על הערך הבוליאני. Switch(‏ Boolean(‏ ParseJSON( "{ ""זמין"": 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 )