Share via


Använda JSONPath för att transformera JSON-data i arbetsböcker

Arbetsböcker kan köra frågor mot data från många källor. Vissa slutpunkter, till exempel Azure Resource Manager eller anpassade slutpunkter, kan returnera resultat i JSON. Om JSON-data som returneras av den efterfrågade slutpunkten är i ett format som du inte vill använda kan du använda JSONPath-transformering för att konvertera JSON till en tabellstruktur. Du kan sedan använda tabellen för att rita arbetsboksvisualiseringar.

JSONPath är ett frågespråk för JSON som liknar XPath för XML. Precis som XPath tillåter JSONPath extrahering och filtrering av data från JSON-strukturen.

Använda JSONPath

I det här exemplet representerar JSON-objektet ett lagers lager. Vi ska skapa en tabell med butikens tillgängliga böcker som visar deras titlar, författare och priser.

  1. Växla arbetsboken till redigeringsläge genom att välja Redigera.

  2. Använd länken Lägg till>fråga för att lägga till en frågekontroll i arbetsboken.

  3. Välj datakällan som JSON.

  4. Använd JSON-redigeraren för att ange följande JSON-kodfragment:

    { "store": {
        "books": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
          "color": "red",
          "price": 19.95
        }
      }
    }
    
  5. Välj fliken Resultat Inställningar och växla resultatformatet till JSON-sökväg.

  6. Använd följande JSON-sökvägsinställningar:

    • JSON-sökvägstabell: $.store.books. Det här fältet representerar sökvägen till tabellens rot. I det här fallet bryr vi oss om butikens bokinventering. Tabellsökvägen filtrerar JSON till bokinformationen.

      Kolumn-ID:t JSON-kolumnsökvägar
      Title $.title
      Författare $.author
      Pris $.price

    Kolumn-ID:t är kolumnrubrikerna. Kolumn-JSON-sökvägar representerar sökvägen från tabellens rot till kolumnvärdet.

  7. Välj Kör fråga.

    Screenshot that shows editing a query item with JSON data source and JSON path result format.

Använda reguljära uttryck för att konvertera värden

Du kan ha vissa data som inte är i standardformat. Om du vill använda dessa data effektivt vill du konvertera dessa data till ett standardformat.

I det här exemplet är det publicerade datumet i YYYMMMDD-format. Koden tolkar det här värdet som ett numeriskt värde, inte text, vilket resulterar i rätt motiverade tal i stället för som ett datum.

Du kan använda fälten Typ, RegEx Match och Ersätt med i resultatinställningarna för att konvertera resultatet till sanna datum.

Resultatinställningsfält beskrivning
Typ Gör att du uttryckligen kan ändra typen av det värde som returneras av API:et. Det här fältet lämnade vi vanligtvis oet, men du kan använda det här fältet för att tvinga värdet till en annan typ.
Regex-matchning Gör att du kan ange ett reguljärt uttryck för att delta (eller delar) av det värde som returneras av API:et i stället för hela värdet. Det här fältet kombineras vanligtvis med fältet Ersätt med .
Ersätt med Använd det här fältet för att skapa det nya värdet tillsammans med det reguljära uttrycket. Om det här värdet är tomt är $&standardvärdet , vilket är matchningsresultatet för uttrycket. Se string.replace-dokumentationen om du vill se andra värden som du kan använda för att generera andra utdata.

Så här konverterar du YYYMMDD-format till YYYY-MM-DD-format:

  1. Välj raden Publicerad i rutnätet.

  2. I fältet Typ väljer du Datum/tid så att kolumnen kan användas i diagram.

  3. I fältet Regex Match använder du det här reguljära uttrycket: ([0-9]{4})([0-9]{2})([0-9]{2}). Det här reguljära uttrycket:

    • matchar ett fyrsiffrigt tal, sedan ett tvåsiffrigt tal och sedan ytterligare ett tvåsiffrigt tal.
    • Parenteserna bildar insamlingsgrupper som ska användas i nästa steg.
  4. I ersätt med använder du det här reguljära uttrycket: $1-$2-$3. Det här uttrycket skapar en ny sträng med varje infångad grupp, med ett bindestreck mellan dem, vilket gör "12345678" till "1234-56-78").

  5. Kör frågan igen.

    Screenshot that shows JSONpath converted to date-time format.

Nästa steg