JPath per corrispondenza di query parziale

Aug 20 2020

Sto cercando di imparare la query json jpath. Sono riuscito a restituire dati in base a ricerche esatte.

Ad esempio sul sito: https://jsonpath.com/ Riesco a recuperare con successo il tipo di telefono in base al numero di telefono:

JSON

{
  "firstName": "John",
  "lastName" : "doe",
  "age"      : 26,
  "address"  : {
    "streetAddress": "naist street",
    "city"         : "Nara",
    "postalCode"   : "630-0192"
  },
  "phoneNumbers": [
    {
      "type"  : "iPhone",
      "number": "0123-4567-8888"
    },
    {
      "type"  : "home",
      "number": "0123-4567-8910"
    }
  ]
}

Query

$.[?(@.number== '0123-4567-8888')].type

Tuttavia non riesco a trovare esempi che mi mostrino come abbinare un risultato di ricerca parziale. Sto cercando di scrivere una query in cui fornisco solo "0123" e quindi restituisco "home" e "iPhone" come risultati. Come posso farlo?

Risposte

1 DmitriT Aug 20 2020 at 23:05

Puoi utilizzare l' operatore del filtro di=~ corrispondenza che consente di fornire un'espressione regolare invece di un valore rigoroso, in modo da modificare la query come:

$.phoneNumbers[?(@.number=~/.*0123.*/)].type

otterrai entrambi i tipi come risultato:

Ulteriori informazioni: Plugin JSON Path Extractor di JMeter - Scenari di utilizzo avanzati