إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: تطبيقات Canvas لتطبيقات
Copilot Studio
المستندة إلى نموذج وظائف
Power Platform CLI
Dataverse Power
Pages
تفسير سلسلة JSON وإرجاع قيمة ديناميكية أو قيمة مكتوبة معينة إذا تم توفير نوع.
مهم
- يعد استخدام الوسيطة ParseJSON الثانية للتحويل إلى كائن مكتوب ميزة تجريبية.
- الهدف من الميزات التجريبية ليس الاستخدام في الإنتاج وقد يكون لها دالات مقيدة. تتوفر هذه الميزات قبل الإصدار الرسمي حتى تتمكن من الحصول على وصول مبكر وتقديم التعليقات. مزيد من المعلومات: فهم الميزات التجريبية والإصدار الأولي والميزات المستبعدة في تطبيقات اللوحة
- السلوك الذي تصفه هذه المقالة متاح فقط عندما يتم تشغيل ميزة الدالات المحددة بواسطة المستخدم التجريبية في الإعدادات > الميزات القادمة > تجريبية (يتم إيقاف تشغيلها بشكل افتراضي).
- إن تعليقاتك قيّمة جدًا بالنسبة لنا. يرجى إعلامنا برأيك في منتدى مجتمع الميزات التجريبية في Power Apps.
الوصف
تقوم 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 | الوصف | مثال عن التحويل |
|---|---|---|---|
| قيمة منطقية | { "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() or 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 ) |
| Choice | { "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 لتحديد السجلات التي يمكن البحث فيها بعد ذلك. | غير متوفر |
| جدول | [ { "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 ) ) - تعتبر قيم
nullJSON الفارغة (). تُرجع الصيغة التاليةtrue:IsBlank( Text( ParseJSON( JsonString ).empty ) )
صفائف بسيطة
سلسلة JSON التالية في متغير يسمى JsonString
{ "array": [1, 2, 3] }
- يؤدي الوصول إلى الرقم الثاني في جدول العمود الواحد للقيم الديناميكية في حقل الصفيف وتحويله إلى رقم باستخدام Value() إلى إرجاع
2:Value( 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 )