Share via


Objektdatatype uden type

Objekt uden type er en datatype i Power Fx, der kan indeholde en hvilken som helst datastruktur, kompleks eller enkel. Den kan ikke bruges direkte og kræver eksplicit konvertering til en datatype. Du kan få adgang til felter i poster i et objekt uden type ved hjælp af punktnotation, og tilstedeværelsen af felter kontrolleres kun under kørsel.

Objekt uden type er returtypen for bestemte udbydere uden type. I øjeblikket er det kun funktionen ParseJSON(), der returnerer et objekt uden type.

Simple typer

Værdien af en variabel af typen objekt uden type kan ikke bruges direkte. Du skal altid skrive tyden korrekt ved hjælp af den tilsvarende typekonstruktør.

I følgende eksempler konverteres værdien af en variabel for et objekt uden type med navnet UOValue.

Text(UOValue)
Value(UOValue)

I følgende tabel vises datatyperne og de tilsvarende funktioner, du kan bruge til at konvertere et objekt uden type til den pågældende datatype.

Datatype Funktion Beskrivelse
Boolean Boolean() Når du konverterer objekt uden type til boolesk, skal den underliggende værdi repræsentere en boolesk værdi eller en type, der automatisk kan konverteres (f.eks. strengen "sand").
Color ColorValue() eller RGBA() Farver kan repræsenteres i farvedefinitionen for typografiark (CSS) som en streng eller som individuelle RGBA-komponenter. Et objekt uden type kan konverteres direkte fra en farvedefinitionsstreng for en typografi (CSS) ved hjælp af funktionen ColorValue() eller fra de enkelte RGBA-tal til farve ved hjælp af funktionen RGBA().
Currency, Number Value() Når du konverterer objekt uden type til tal, skal den underliggende værdi repræsentere et tal eller en type, der automatisk kan konverteres (f.eks. strengen "123.456").
Date, DateTime, Time DateValue(), TimeValue() eller DateTimeValue() Dato, klokkeslæt og dato/klokkeslæt kan konverteres direkte fra et objekt uden type til deres respektive type, når de repræsenteres i ISO 8601-format. Andre formater skal først konverteres til tekst ved hjælp af funktionen Text() og derefter overføres til funktionen DateValue(), TimeValue() eller DateTimeValue(), der som standard bruger sproget i den aktuelle brugers indstillinger til at fortolke dato og klokkeslæt.
GUID GUID() Et objekt uden type kan konverteres direkte til GUID, hvis det underliggende objekt repræsenterer et GUID, eller hvis det repræsenterer en streng.
HyperLink, Image, Media Text() Disse datatyper er tekstdatatyper og kan konverteres til tekst og derefter bruges i Power Fx.
Choice, Two Option Switch() eller If() Valgmuligheder og to muligheder vises som oversatte strenge i Power Fx. Valgmuligheder understøttes af et tal og to muligheder som booleske værdier. Der er ingen direkte konvertering fra boolesk, tal eller streng til en valgmulighed eller to muligheder, men funktionerne Switch() eller If() kan bruges på en boolesk værdi, tekst eller tal til korrekt at tildele værdien af valgmuligheden eller to muligheder.
Post i/t Der sker ingen direkte konvertering fra et objekt uden type til en poststruktur, men der kan hentes individuelle felter fra objektet uden type for at oprette en ny post.
Postreference i/t Postreferencer er entydige for datakilder og har ingen meningsfuld repræsentation i objekter uden type.
Table Table() og ForAll() Et objekt uden type kan repræsentere en matrix, som kan konverteres til en tabel. Disse objekter kan være matrixer med poster eller matrixer med værdier, der i praksis er tabeller med én kolonne. ForAll() kan bruges til at oprette en tabel med fulde typeposter. Gennemgå eksemplerne længere nede i denne artikel for at få flere oplysninger.
Text Text() Tekst kan konverteres direkte. Hvis et objekt uden type repræsenterer et tal, skal du konvertere dette objekt uden type til tal ved hjælp af Value(), før du konverterer til tekst.

Posttyper

Du kan få adgang til felter på en variabel, der repræsenterer et objekt uden type, ved hjælp af en almindelig punktnotation, der bruges til poster. Eksistensen af felterne vil dog først blive kontrolleret under kørsel. Det betyder, at der heller ikke er nogen IntelliSense. Hvis et felt ikke findes eller har en underliggende null-værdi, resulterer adgang til det i en Blank()-værdi.

De enkelte felter i posten er også et objekt uden type og skal skrives korrekt. Feltet kan være en ikke-typepost af en simpel type. Hvis der er tale om en post, kan du bruge punktnotation. Hvis et felt ikke findes, returneres Blank().

I følgende eksempler bruges felter fra en variabel for et objekt uden type med navnet UORecord.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

Hvis et feltnavn består af et ugyldigt id-navn, f.eks. når feltnavnene starter med et tal eller indeholder ugyldige tegn, f.eks. en bindestreg, kan du angive feltnavnene i enkelte anførselstegn:

untyped.'01'
untyped.'my-field'

Matrixer

En variabel til et objekt uden type kan indeholde en matrix. Selvom matrixen enten kan være en matrix med poster eller matrix af simple typer, vil konvertering af objektet uden type til en tabel ved hjælp af funktionen Table() altid resultere i en tabel med med én kolonne af objekter uden type. Funktioner som ForAll() og Index() kræver ikke, at du først opretter en Table() og derfor ikke kræver, at du bruger feltet Value med en enkelt kolonne.

Hvis du f.eks. vil have det andet tal i en matrix for et objekt uden type, der indeholder talværdier ( [1, 2, 3] ), kan følgende formel bruges til at hente den anden række i tabellen og konvertere kolonnen til et tal:

Value( Index( UOArray, 2 ) )

Hvis objektet uden type først blev konverteret til en Table(), er den anden række i resultattabellen med en enkelt kolonne en Value-kolonne, der indeholder objektet uden type:

Value( Index( Table( UOArray ), 2 ).Value )

For en matrix med poster, der har en tekstkolonne med navnet Field, anvendes den samme logik. Der er direkte adgang til objektet uden type, eller hvis funktionen Table() bruges, resulterer det i en tabel med en enkelt kolonne for et objekt uden type.

Kolonnen Field har direkte adgang fra objektet uden type, der returneres af funktionen Index().

Text( Index( UORecordArray, 2 ).Field )

Når du bruger funktionen Table(), skal du først hente den enkelte kolonnes Value for at hente objektet uden type og derefter åbne kolonnen Field:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

Hvis du vil konvertere en matrix med poster til en typetabel, kan du bruge funktionen ForAll() og konvertere de enkelte felter.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

Hvis objektet uden type først konverteres til en tabel, skal du igen bruge kolonnen Value til at hente felterne i den resulterende tabel med en enkelt kolonne med et objekt uden type.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )