Share via


JSONPath gebruiken om JSON-gegevens in werkmappen te transformeren

Werkmappen kunnen query's uitvoeren op gegevens uit veel bronnen. Sommige eindpunten, zoals Azure Resource Manager of aangepaste eindpunten, kunnen resultaten retourneren in JSON. Als de JSON-gegevens die door het opgevraagde eindpunt worden geretourneerd, een indeling hebben die u niet wilt, kunt u JSONPath-transformatie gebruiken om de JSON te converteren naar een tabelstructuur. Vervolgens kunt u de tabel gebruiken om werkmapvisualisaties te tekenen.

JSONPath is een querytaal voor JSON die vergelijkbaar is met XPath voor XML. Net als XPath maakt JSONPath het extraheren en filteren van gegevens uit de JSON-structuur mogelijk.

JSONPath gebruiken

In dit voorbeeld vertegenwoordigt het JSON-object de inventaris van een winkel. We gaan een tabel maken met de beschikbare boeken van de winkel met hun titels, auteurs en prijzen.

  1. Schakel de werkmap over naar de bewerkingsmodus door Bewerken te selecteren.

  2. Gebruik de koppeling Query toevoegen toevoegen> om een besturingselement voor query's aan de werkmap toe te voegen.

  3. Selecteer de gegevensbron als JSON.

  4. Gebruik de JSON-editor om het volgende JSON-fragment in te voeren:

    { "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. Selecteer het tabblad Resultaat Instellingen en zet de resultaatindeling over op JSON-pad.

  6. Pas de volgende JSON-padinstellingen toe:

    • JSON-padtabel: $.store.books. Dit veld vertegenwoordigt het pad van de hoofdmap van de tabel. In dit geval maken we ons zorgen over de boekvoorraad van de winkel. Het tabelpad filtert de JSON naar de boekgegevens.

      Kolom-id's JSON-paden voor kolommen
      Titel $.title
      Auteur $.author
      Prijs $.price

    Kolom-id's zijn de kolomkoppen. Kolom-JSON-padenvelden vertegenwoordigen het pad van de hoofdmap van de tabel naar de kolomwaarde.

  7. Selecteer Query uitvoeren.

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

Reguliere expressies gebruiken om waarden te converteren

Mogelijk hebt u een aantal gegevens die niet in een standaardindeling zijn. Als u die gegevens effectief wilt gebruiken, wilt u die gegevens converteren naar een standaardindeling.

In dit voorbeeld heeft de gepubliceerde datum de indeling JJJJMMMDD. De code interpreteert deze waarde als een numerieke waarde, geen tekst, wat resulteert in rechts uitgevulde getallen in plaats van als datum.

U kunt de velden Type, RegEx Match en Replace With in de resultaatinstellingen gebruiken om het resultaat om te zetten in werkelijke datums.

Veld voor resultaatinstelling Beschrijving
Type Hiermee kunt u het type van de waarde die wordt geretourneerd door de API expliciet wijzigen. Dit veld is meestal uitgeschakeld, maar u kunt dit veld gebruiken om de waarde af te dwingen op een ander type.
Regex Match Hiermee kunt u een reguliere expressie invoeren om deel te nemen aan de waarde die door de API wordt geretourneerd in plaats van de hele waarde. Dit veld wordt meestal gecombineerd met het veld Vervangen door .
Vervangen door Gebruik dit veld om de nieuwe waarde samen met de reguliere expressie te maken. Als deze waarde leeg is, is $&de standaardwaarde , het overeenkomende resultaat van de expressie. Zie de documentatie string.replace om andere waarden te bekijken die u kunt gebruiken om andere uitvoer te genereren.

JJJJMMDD-indeling converteren naar JJJJ-MM-DD-indeling:

  1. Selecteer de gepubliceerde rij in het raster.

  2. Selecteer in het veld Type datum/tijd, zodat de kolom bruikbaar is in grafieken.

  3. Gebruik in het veld Regex Match deze reguliere expressie: ([0-9]{4})([0-9]{2})([0-9]{2}). Deze reguliere expressie:

    • komt overeen met een getal van vier cijfers, vervolgens een getal van twee cijfers en een ander getal van twee cijfers.
    • In de volgende stap worden groepen voor het vastleggen van haakjes vastgelegd.
  4. Gebruik in vervangen door deze reguliere expressie: $1-$2-$3. Met deze expressie wordt een nieuwe tekenreeks gemaakt met elke vastgelegde groep, met een afbreekstreepje ertussen, waarbij '12345678' wordt omgezet in '1234-56-78').

  5. Voer de query opnieuw uit.

    Screenshot that shows JSONpath converted to date-time format.

Volgende stappen