Συνάρτηση ParseJSON
Ισχύει σε: Εφαρμογές καμβά
Εφαρμογές βάσει μοντέλου
Power Pages
Power Platform CLI
Ερμηνεύει μια συμβολοσειρά JSON και επιστρέφει ένα μη τυπολογημένο αντικείμενο ή ένα τυπολογημένο αντικείμενο.
Σημαντικό
- Η χρήση του δεύτερου ορίσματος στο ParseJSON για μετατροπή σε τυπολογημένο αντικείμενο είναι μια πειραματική δυνατότητα.
- Οι πειραματικές δυνατότητες δεν προορίζονται για χρήση παραγωγής και ενδέχεται να έχουν περιορισμένη λειτουργικότητα. Αυτές οι δυνατότητες είναι διαθέσιμες πριν από μια επίσημη κυκλοφορία έτσι ώστε να μπορείτε να έχετε πρόσβαση από νωρίς και να κάνετε σχόλια. Περισσότερες πληροφορίες: Κατανοήστε τις πειραματικές, αποσυρμένες δυνατότητες και δυνατότητες προεπισκόπησης σε εφαρμογές καμβά
- Η συμπεριφορά που περιγράφεται σε αυτό το άρθρο είναι διαθέσιμη μόνο όταν η πειραματική δυνατότητα Τύποι καθορισμένοι από τον χρήστη στις Ρυθμίσεις > Προσεχείς δυνατότητες > Πειραματικές είναι ενεργοποιημένες (είναι απενεργοποιημένες από προεπιλογή).
- Τα σχόλιά σας είναι πολύτιμα για εμάς. Πείτε μας τη γνώμη σας στο φόρουμ της κοινότητας πειραματικών δυνατοτήτων του 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 [ , Τύπος ] )
- JSONString – Υποχρεωτικό. Η δομή JSON που αντιπροσωπεύεται ως κείμενο.
- Τύπος - Προαιρετικό. Ο Power Fx ορισμός τύπου για τη δομή JSON. Χωρίς αυτό το όρισμα, το ParseJSON επιστρέφει ένα μη τυπολογημένο αντικείμενο. Με αυτό, η συνάρτηση επιστρέφει ένα αντικείμενο με ισχυρή τυπολόγηση.
Μετατροπή τύπου δεδομένων μη πληκτρολογημένου αντικειμένου
Χωρίς το δεύτερο όρισμα, το ParseJSON επιστρέφει ένα μη τυπολογημένο αντικείμενο, το οποίο απαιτεί ρητή μετατροπή των τιμών πεδίων σε υποστηριζόμενους τύπους δεδομένων. Ο παρακάτω πίνακας περιλαμβάνει τους τύπους δεδομένων στο Power Apps, καθώς και έναν αντίστοιχο τύπο δεδομένων JSON και τον τρόπο μετατροπής τους.
Τύπος δεδομένων | Παραδείγματα JSON | Description | Παράδειγμα μετατροπής |
---|---|---|---|
Boolean | { "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 ) |
Date, DateTime, Time | { "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 ) |
HyperLink, Image, Media | { "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 ) )
- Οι τιμές
null
JSON θεωρούνται Blank(). Ο παρακάτω τύπος επιστρέφει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 )