La función Json.FromValue devuelve una representación en formato JSON del valor indicado.
Json.FromValue(
value as any,
optional encoding as nullable number
) as binary
- value: valor a convertir a formato JSON
- encoding: (opcional) codificación a aplicar al texto resultante
Si no se especifica una codificación, se utiliza UTF8 por defecto.
Los valores son convertidos en función de su tipo:
- valores null, de texto y booleanos se representan con los tipos equivalentes JSON
- los números se representan como tales salvo #infinity, -#infinity y #nan, que son convertidos a null.
- Las listas son representadas como arrays JSON
- Los registros son representados como objetos JSON
- Las tablas son representadas como arrays de objetos
- Valores de tipo date, time, datetime, datetimezone y duration son representados como textos ISO 8601
- Los valores binarios son representados como texto codificado base-64.
- Los tipos y las funciones devuelven un error
Para probar esta función partimos de la siguiente tabla que leemos desde Power BI:
El conjunto de instrucciones M que cargan esta tabla, promociona encabezados y aplica tipos por defecto es el siguiente:
Añadimos ahora una instrucción que genere el equivalente a la tabla en formato JSON y otra que convierta el resultado en texto:
let
Source = Excel.Workbook(File.Contents("D:\Downloads\sales.xlsx"), null, true),
Hoja1_Sheet = Source{[Item="Hoja1",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Hoja1_Sheet, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Category", type text}, {"Sales", Int64.Type}}),
json = Json.FromValue(#"Changed Type"),
text_output = Text.FromBinary(json)
in
text_output
El resultado es el siguiente:
[{"Category":"Furniture","Sales":160},{"Category":"Bicycles","Sales":53},{"Category":"Computers","Sales":68},{"Category":"TV","Sales":112}]