الدالة ParseJSON

ينطبق على: تطبيقات اللوحة التطبيقات Power Pages Power Platform المستندة إلى النموذج CLI

تفسر سلسلة JSON وتُرجع كائنًا غير مصنف.

الوصف

ستقوم الدالة ParseJSON بتحليل سلسلة JSON صالحة وتُرجع كائنًا غير مصنف يمثل بنية JSON.

قد تُرجع الدالة ParseJSON أخطاء إذا لم يكن النص عبارة عن JSON صالح وفقًا لتنسيق JavaScript Object Notation (JSON) الذي ورد وصفه في ECMA-404 وIETF RFC 8259.

بناء الجملة

تحليل JSON( 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( القيمة (uo.r)، القيمة (uo.g)، القيمة (uo.b)، القيمة (uo.a))
العملة، الرقم { "numbervalue": 123.5 } يتم تمثيل الأرقام مباشرة في JSON بنقطة ( . ) كفاصل عشري. القيمة (ParseJSON ("{ "قيمة الرقم": 123.5 }") .numbervalue)
التاريخ، التاريخ/الوقت، الوقت { "start": "2022-05-10" }
{ "start": "23:12:49.000" }
لا يوجد في JSON نوع تاريخ أو وقت، لذا يمكن أن يمثل التواريخ والأوقات كسلاسل فقط. يمكن تحويل كائن غير مصنف مباشرة من سلسلة بتنسيق ISO 8601 إلى تاريخ أو تاريخ/وقت. بالنسبة إلى التنسيقات الأخرى، حوّل أولاً الحقل JSON إلى نص باستخدام الدالة Text() ثم استخدم الدالة DateValue(), TimeValue() or DateTimeValue() التي ستستخدم بشكل افتراضي لغة إعدادات المستخدم الحالية. DateValue ( ParseJSON ("{ ""موعد"": ""2022-05-10 }"").موعد)
DateValue (النص ( ParseJSON ("{ "التعيين": ""5 مايو 2022"" }).موعد) )
معرف 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 )
Choice { "status": 1 }
{ "status": "Closed" }
يتم عرض الاختيارات على أنها سلاسل مترجمة، يدعمها رقم. تقوم الدالة الدالة JSON()‎ بسلسلة اختيار مع رقمه الداعم. لا يوجد تحويل مباشر من رقم أو سلسلة إلى اختيار، ولكن يمكن استخدام الدالتين Switch() أو If() على القيمة النصية أو الرقمية. التبديل (القيمة (ParseJSON ( "{ "الحالة": 1 }") .status) ، 0 ، الحالة.Open ، 1 ، الحالة.مغلق)
سجل { "field": "value" } لا يوجد تحويل مباشر من كائن JSON إلى بنية سجل، ولكن يمكن استرداد الحقول الفردية من الكائن غير المصنف لتشكيل سجل. { الحقل: النص ( ParseJSON ( "{ ""الحقل"": "القيمة"" }).حقل) }
مرجع السجل غير متوفر مراجع السجل فريدة لمصادر البيانات ولا يمكن سلسلتها أو إلغاء سلسلتها. ويمكن استخدام قيم الحقول التي تمثل المفاتيح الفريدة في JSON لتحديد السجلات التي يمكن البحث فيها بعد ذلك. غير متوفر
جدول [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" } ]
[1, 2, 3]
يمكن أن يحتوي JSON على صفائف، يمكن تحويلها إلى جداول. يمكن أن تكون هذه القيم عبارة عن صفائف من السجلات، أو صفائف من القيم هي في الواقع جداول عمود واحد. لا يمكن تحويل صفائف ParseJSON() إلا إلى جدول عمود واحد من الكائنات غير المكتوبة ، ويمكن استخدامها على هذا النحو أو تحويلها إلى جداول سجلات مكتوبة باستخدام ForAll(). ForAll( الجدول ( ParseJSON ( "[ { "id"": 1 ، ""الاسم": ""واحد }" ، { ""id"": 2 ، ""الاسم": ""اثنان" } "])) ، { المعرف: القيمة (ThisRecord.Value.id) ، الاسم: نص (ThisRecord.Value.name) } )
نص { "stringField": "this is text" } النوع "نص" هو نوع واضح في JSON ويمكن تحويله مباشرة. النص ( ParseJSON ( "{ ""stringField"": ""هذا نص"" }).stringField )
خياران { "available": true }
{ "available": "Yes" }
هناك خياران يظهران كسلاسل مترجمة، يدعمهما قيمة منطقية. تقوم الدالة JSON() بسلسلة خيارين إلى قيمتهما المنطقية. لا يوجد تحويل مباشر من قيمة منطقية أو رقم أو سلسلة إلى خيارين، ولكن يمكن استخدام الدالتين Switch() أو If() على القيمة النصية أو الرقمية أو المنطقية. التبديل (منطقي ( ParseJSON ( "{ ""متاح": صحيح }").متاح) ، خطأ ، Availability.No ، صحيح ، توفر.نعم)

الأمثلة

الوصول إلى قيم الحقول

سلسلة 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. تعتبر قيم null JSON الفارغة (). تُرجع الصيغة التالية 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 )