Κοινή χρήση μέσω


Συνάρτηση ParseJSON

Ισχύει σε: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου Power Platform CLI

Ερμηνεύει μια συμβολοσειρά JSON και επιστρέφει ένα μη πληκτρολογημένο αντικείμενο.

Description

Η συνάρτηση ParseJSON θα αναλύσει μια έγκυρη συμβολοσειράς JSON και θα επιστρέψει ένα μη πληκτρολογημένο αντικείμενο που αντιπροσωπεύει τη δομή JSON.

Η συνάρτηση ParseJSON ενδέχεται να επιστρέψει σφάλματα εάν το κείμενο δεν είναι έγκυρο JSON σύμφωνα με τη μορφή της σημειογραφίας του αντικειμένου JavaScript (JSON) που περιγράφεται στο ECMA-404 και το IETF R 8259.

Σύνταξη

ParseJSON( JSONString )

  • JSONString – Υποχρεωτικό. Η δομή JSON που αντιπροσωπεύεται ως κείμενο.

Μετατροπή τύπου δεδομένων μη πληκτρολογημένου αντικειμένου

Το 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 }
  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 θεωρούνται 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 )