JPath para coincidencia de consulta parcial

Aug 20 2020

Estoy tratando de aprender la consulta json jpath. He podido devolver datos basados ​​en búsquedas exactas.

Por ejemplo en el sitio: https://jsonpath.com/ Puedo recuperar correctamente el tipo de teléfono según el número de teléfono:

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"
    }
  ]
}

Consulta

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

Sin embargo, no puedo encontrar ningún ejemplo que me muestre cómo hacer coincidir un resultado de búsqueda parcial. Estoy tratando de escribir una consulta en la que proporciono solo "0123" y, por lo tanto, obtengo "home" y "iPhone" como resultados. ¿Cómo puedo hacer esto?

Respuestas

1 DmitriT Aug 20 2020 at 23:05

Puede usar el operador de filtro de=~ coincidencia que permite proporcionar una expresión regular en lugar de un valor estricto, por lo que, dado que modifica su consulta, como:

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

obtendrá ambos tipos como resultado:

Más información: Complemento JSON Path Extractor de JMeter : escenarios de uso avanzados