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


Συνάρτηση JSON

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

Δημιουργεί μια συμβολοσειρά κειμένου JSON για έναν πίνακα, μια καρτέλα ή μια τιμή.

Περιγραφή

Η συνάρτηση JSON αποδίδει την αναπαράσταση JavaScript Object Notation (JSON) μιας δομής δεδομένων ως κείμενο, έτσι ώστε να είναι κατάλληλη για την αποθήκευση ή τη μετάδοση μέσω δικτύου. Τα [ECMA-404](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf και IETF RFC 8259 περιγράφουν τη μορφή, η οποία χρησιμοποιείται ευρέως από τη JavaScript και άλλες γλώσσες προγραμματισμού.

Οι εφαρμογές καμβά υποστηρίζουν τους τύπους δεδομένων που αναφέρονται σε αυτόν τον πίνακα με λεπτομέρειες σχετικά με την αναπαράστασή τους στο κείμενο:

Τύπος δεδομένων Περιγραφή Παράδειγμα αποτελέσματος
Δυαδική τιμή true ή false. true
Χρώμα Συμβολοσειρά που περιέχει τη δεκαεξαδική απεικόνιση 8 ψηφίων για το χρώμα. Αυτή η αναπαράσταση παίρνει τη μορφή #rrggbbaa, όπου rr είναι το κόκκινο στοιχείο, gg είναι το πράσινο, bb είναι το μπλε, και aa είναι το κανάλι άλφα. Για το κανάλι άλφα, τα 00 είναι πλήρως διαφανές και το ff είναι πλήρως αδιαφανές. Μπορείτε να διαβιβάσετε τη συμβολοσειρά στη συνάρτηση ColorValue. "#102030ff"
Νομισματική μονάδα Αριθμός που χρησιμοποιεί το κατάλληλο διαχωριστικό δεκαδικών για τη γλώσσα του χρήστη. Εάν χρειάζεται, χρησιμοποιείται η επιστημονική σημειογραφία. 1.345
Ημερομηνία Συμβολοσειρά που περιέχει την ημερομηνία σε μορφή ISO 8601 εεεε-μμ-ηη. "2019-03-31"
ΗμερομηνίαΏρα Συμβολοσειρά που περιέχει μια ημερομηνία/ώρα ISO 8601. Οι τιμές "ημερομηνία/ώρα" είναι σε UTC, όπως υποδηλώνει το τέλος "Z". "2019-03-31T22:32:06.822Z"
GUID Συμβολοσειρά που περιέχει την τιμή GUID. Τα γράμματα είναι πεζά. "751b58ac-380e-4a04-a925-9f375995cc40"
Εικόνα, πολυμέσα Εάν καθορίζεται JSONFormat.IncludeBinaryData, τα αρχεία πολυμέσων είναι κωδικοποιημένα σε μια συμβολοσειρά. Οι αναφορές Web που χρησιμοποιούν το σχήμα διεύθυνσης URL http: ή https: δεν τροποποιήθηκαν. Οι αναφορές σε δυαδικά δεδομένα στη μνήμη είναι κωδικοποιημένες με τη μορφή "data:mimetype;base64,...". Τα δεδομένα στη μνήμη περιλαμβάνουν εικόνες που καταγράφουν οι χρήστες χρησιμοποιώντας το στοιχείο ελέγχου Camera και οποιεσδήποτε άλλες αναφορές με τους συνδυασμούς διευθύνσεων URL appres: και αντικείμενο blob:. "data:image/jpeg;base64,/9j/4AA..."
Αριθμός Αριθμός που χρησιμοποιεί το κατάλληλο διαχωριστικό δεκαδικών για τη γλώσσα του χρήστη. Εάν χρειάζεται, χρησιμοποιείται η επιστημονική σημειογραφία. 1.345
Σύνολο επιλογών Η αριθμητική τιμή της επιλογής και όχι η ετικέτα που χρησιμοποιείται για την εμφάνιση. Η αριθμητική τιμή χρησιμοποιείται επειδή είναι ανεξάρτητη γλώσσα. 1001
Time Συμβολοσειρά που περιέχει μια μορφή ISO 8601 hh:mm:ss.fff. "23:12:49.000"
Καρτέλα Λίστα οριοθετημένη με κόμματα, μεταξύ { και } πεδίων και των τιμών τους. Αυτή η σημειογραφία μοιάζει με εκείνη για τις καρτέλες σε εφαρμογές καμβά, αλλά το όνομα είναι πάντα μεταξύ των διπλών εισαγωγικών. Αυτή η μορφή δεν υποστηρίζει καρτέλες που βασίζονται σε σχέσεις πολλών προς έναν. { "First Name": "Fred", "Age": 21 }
Table Λίστα οριοθετημένη με κόμματα, μεταξύ [ και ], των καρτελών. Αυτή η μορφή δεν υποστηρίζει πίνακας που βασίζονται σε σχέσεις ενός προς πολλούς. Χρησιμοποιήστε την επιλογή JSONFormat.FlattenValueTables για να καταργήσετε την καρτέλα για μεμονωμένους πίνακες στηλών με τη στήλη που ονομάζεται Τιμή. [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ]
Δύο επιλογές Δυαδική τιμή των δύο επιλογών, true ή false και όχι η ετικέτα που χρησιμοποιείται για εμφάνιση. Η δυαδική τιμή χρησιμοποιείται επειδή είναι ανεξάρτητη γλώσσα. false
Υπερ-σύνδεση, κείμενο Συμβολοσειρά μεταξύ διπλών εισαγωγικών. Η λειτουργία αποφεύγει τα ενσωματωμένα διπλά εισαγωγικά με μια ανάστροφη κάθετο, αντικαθιστά νέες γραμμές με το "\n" και κάνει άλλες τυπικές αντικαταστάσεις JavaScript. "This is a string."

Καθορίστε το προαιρετικό όρισμα Μορφή για να ελέγχετε το πόσο αναγνώσιμο είναι το αποτέλεσμα και το πόσο μη υποστηριζόμενο και δυαδικά αντιμετωπίζονται οι τύποι δεδομένων. Από προεπιλογή, η έξοδος είναι όσο το δυνατό πιο συμπαγής χωρίς περιττά κενά διαστήματα ή νέες γραμμές και δεν επιτρέπονται μη υποστηριζόμενοι τύποι δεδομένων και δυαδικά δεδομένα. Μπορείτε να συνδυάσετε πολλές μορφές εάν καθορίσετε τον τελεστή &.

Απαρίθμηση JSONFormat Description
JSONFormat.Compact Προεπιλογή. Η έξοδος είναι όσο το δυνατό πιο συμπαγής χωρίς πρόσθετα διαστήματα ή νέες γραμμές.
JSONFormat.FlattenValueTables Ως πίνακας τιμών, ο συμβολισμός [1,2,3] οδηγεί σε έναν πίνακα που περιέχει εγγραφές, όπου κάθε εγγραφή έχει μία μόνο στήλη τιμών. Στο JSON, η ίδια μορφή αντιπροσωπεύει έναν πίνακα τριών αριθμών. Για να διευκολύνετε την εναλλαγή των δύο στοιχείων, αυτή η επιλογή ισιώνει έναν πίνακα τιμών Power Fx σε έναν φιλικό πίνακα JSON αντί για έναν πίνακα καρτελών.
JSONFormat.IndentFour Για τη βελτίωση της αναγνωσιμότητας, η έξοδος περιέχει μια νέα γραμμή για κάθε στήλη και ένα επίπεδο ένθεσης και χρησιμοποιεί τέσσερα διαστήματα για κάθε επίπεδο εσοχής.
JSONFormat.IncludeBinaryData Το αποτέλεσμα περιλαμβάνει στήλες εικόνων, βίντεο και απόσπασμα ήχου. Αυτή η μορφή μπορεί να αυξήσει εντυπωσιακά το μέγεθος του αποτελέσματος και να υποβαθμίσει την απόδοση της εφαρμογής σας.
JSONFormat.IgnoreBinaryData Το αποτέλεσμα δεν περιλαμβάνει στήλες εικόνων, βίντεο ή αποσπάσματος ήχου. Εάν δεν καθορίσετε ούτε JSONFormat.IncludeBinaryData ούτε JSONFormat.IgnoreBinaryData, η συνάρτηση δημιουργεί σφάλμα εάν συναντήσει δυαδικά δεδομένα.
JSONFormat.IgnoreUnsupportedTypes Επιτρέπονται τύποι δεδομένων που δεν υποστηρίζονται, αλλά το αποτέλεσμα δεν θα τις συμπεριλάβει. Από προεπιλογή, οι μη υποστηριζόμενοι τύποι δεδομένων παράγουν σφάλμα.

Χρησιμοποιήστε τις συναρτήσεις ShowColumns και DropColumns για να ελέγξετε τα δεδομένα που περιλαμβάνει το αποτέλεσμα και για να καταργήσετε μη υποστηριζόμενους τύπους δεδομένων.

Επειδή το JSON μπορεί να είναι τόσο μνήμη όσο και απαιτητικό, μπορείτε να χρησιμοποιήσετε αυτήν τη συνάρτηση μόνο στις συναρτήσεις συμπεριφοράς. Μπορείτε να αποτυπώσετε το αποτέλεσμα από το JSON σε μια μεταβλητή, την οποία μπορείτε να χρησιμοποιήσετε στη συνέχεια στη ροή δεδομένων.

Εάν μια στήλη έχει τόσο εμφανιζόμενο όνομα όσο και ένα λογικό όνομα, το αποτέλεσμα περιέχει το λογικό όνομα. Τα εμφανιζόμενα ονόματα απεικονίζουν τη γλώσσα του χρήστη της εφαρμογής και επομένως δεν είναι κατάλληλα για τη μεταφορά δεδομένων σε μια κοινή υπηρεσία.

Σύνταξη

JSON( DataStructure [, Format ] )

  • DataStructure – Υποχρεωτικό. Η δομή δεδομένων για μετατροπή σε JSON. Οι πίνακες, οι καρτέλες και οι πρωτόγονες τιμές υποστηρίζονται, αυθαίρετα ένθετες.
  • Format - Προαιρετικό. Τιμή απαρίθμησης JSONFormat. Η προεπιλεγμένη τιμή είναι JSONFormat.Compact, η οποία δεν προσθέτει νέες γραμμές ή κενά διαστήματα και αποκλείει τα δυαδικά δεδομένα και τις μη υποστηριζόμενες στήλες.

Παραδείγματα

Ιεραρχικά δεδομένα

  1. Εισαγάγετε ένα στοιχείο ελέγχου Button και ορίστε την ιδιότητά του OnSelect σε αυτόν τον τύπο.

    ClearCollect( CityPopulations,
        { City: "London",    Country: "United Kingdom", Population: 8615000 },
        { City: "Berlin",    Country: "Germany",        Population: 3562000 },
        { City: "Madrid",    Country: "Spain",          Population: 3165000 },
        { City: "Hamburg",   Country: "Germany",        Population: 1760000 },
        { City: "Barcelona", Country: "Spain",          Population: 1602000 },
        { City: "Munich",    Country: "Germany",        Population: 1494000 }
    );
    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
    
  2. Επιλέξτε το κουμπί ενώ κρατάτε πατημένο το πλήκτρο Alt.

    Η συλλογή CitiesByCountry δημιουργείται με αυτήν τη δομή δεδομένων, την οποία μπορείτε να εμφανίσετε επιλέγοντας Συλλογές στο μενού Αρχείο και, στη συνέχεια, επιλέγοντας το όνομα της συλλογής.

    Συλλογή CitiesByCountry.

    Μπορείτε επίσης να εμφανίσετε αυτήν τη συλλογή επιλέγοντας Ρυθμίσεις>Επερχόμενες δυνατότητες>Ενεργοποιήστε την προβολή αποτελέσματος γραμμής τύπων, επιλέγοντας το όνομα της συλλογής στη γραμμή τύπων και, στη συνέχεια, επιλέγοντας το κάτω βέλος δίπλα στο όνομα της συλλογής κάτω από τη γραμμή τύπων.

    Συλλογή στην προβολή αποτελεσμάτων της γραμμής τύπων.

  3. Εισαγάγετε ένα άλλο κουμπί και ορίστε την ιδιότητά του OnSelect σε αυτόν τον τύπο:

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    Αυτός ο τύπος ορίζει την καθολική μεταβλητή CitiesByCountryJSON στην αναπαράσταση JSON για το CitiesByCountry.

  4. Επιλέξτε το κουμπί ενώ κρατάτε πατημένο το πλήκτρο Alt.

  5. Εισαγάγετε ένα στοιχείο ελέγχου Label και ορίστε την ιδιότητά του Text σε αυτήν τη μεταβλητή:

    CitiesByCountryJSON
    

    Η ετικέτα δείχνει αυτό το αποτέλεσμα, όλα σε μία γραμμή χωρίς κενά διαστήματα, κατάλληλα για μετάδοση σε ένα δίκτυο:

    [
      {
        "Cities": [{ "City": "London", "Population": 8615000 }],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          { "City": "Berlin", "Population": 3562000 },
          { "City": "Hamburg", "Population": 1760000 },
          { "City": "Munich", "Population": 1494000 }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          { "City": "Madrid", "Population": 3165000 },
          { "City": "Barcelona", "Population": 1602000 }
        ],
        "Country": "Spain"
      }
    ]
    
  6. Αλλάξτε τον τύπο του δεύτερου κουμπιού για να κάνετε την έξοδο πιο ευανάγνωστη.

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  7. Επιλέξτε το δεύτερο κουμπί κρατώντας πατημένο το πλήκτρο Alt.

    Η ετικέτα εμφανίζει το πιο ευανάγνωστο αποτέλεσμα.

    [
      {
        "Cities": [
          {
            "City": "London",
            "Population": 8615000
          }
        ],
        "Country": "United Kingdom"
      },
      {
        "Cities": [
          {
            "City": "Berlin",
            "Population": 3562000
          },
          {
            "City": "Hamburg",
            "Population": 1760000
          },
          {
            "City": "Munich",
            "Population": 1494000
          }
        ],
        "Country": "Germany"
      },
      {
        "Cities": [
          {
            "City": "Madrid",
            "Population": 3165000
          },
          {
            "City": "Barcelona",
            "Population": 1602000
          }
        ],
        "Country": "Spain"
      }
    ]
    

Εικόνες και πολυμέσα στο base64

  1. Προσθέστε ένα στοιχείο ελέγχου Image.

    Αυτό το στοιχείο ελέγχου συνοδεύεται από το SampleImage.

  2. Προσθέστε ένα στοιχείο ελέγχου Button και ορίστε την ιδιότητά του OnSelect σε αυτόν τον τύπο.

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  3. Επιλέξτε το κουμπί ενώ κρατάτε πατημένο το πλήκτρο Alt.

  4. Προσθέστε μια ετικέτα και ορίστε την ιδιότητά του Text σε αυτήν τη μεταβλητή.

    ImageJSON
    
  5. Αλλάξτε το μέγεθος του στοιχείου ελέγχου και μειώστε το μέγεθος της γραμματοσειράς όπως απαιτείται για να εμφανίσετε το μεγαλύτερο μέρος του αποτελέσματος.

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

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
    

Πίνακες τιμών

Αυτός ο τύπος:

JSON( [1,2,3] )

παράγει τη συμβολοσειρά κειμένου [{"Value":1},{"Value":2},{"Value":3}].

Ο ίδιος τύπος με την επιλογή JSONFormat.FlattenValueTables:

JSON( [1,2,3], JSONFormat.FlattenValueTables )

παράγει τη συμβολοσειρά κειμένου [1,2,3].

Σημειώστε ότι η επιλογή FlattenValueTables δεν έχει αντίκτυπο όταν χρησιμοποιείτε JSON με τις συλλογές CityPopulations ή CitiesByCountry, καθώς αυτοί οι πίνακες δεν είναι πίνακες τιμών. Ένας πίνακας τιμών έχει μία μόνο στήλη και πρέπει να έχει το όνομα "Τιμή".