Saltar al contenido

JMeter: Cómo contar objetos JSON en una matriz usando jsonpath

Solución:

Aunque JSONPath Extractor no proporciona hasSize función todavía se puede hacer.

Dado el JSON de ejemplo de la respuesta de PMD UBIK-INGENIERIE, puede obtener el número de coincidencias en book matriz de al menos 2 formas:

1. La forma más fácil (pero frágil): utilizando Regular Expression Extractor.

Como puede ver, hay 4 entradas para category igual que:

{ "category": "reference",
{ "category": "fiction"
...

Si agrega un Extractor de expresiones regulares configurado de la siguiente manera:

JSON Regex

Capturará todos los category entradas y devuelve el número de coincidencias como se muestra a continuación:

Coincidencias JSON Regex

Entonces podrás usar esto ${matches_matchNr} variable donde sea necesario.

Este enfoque es sencillo y fácil de implementar, pero es muy vulnerable a cualquier cambio en el formato de respuesta. Si espera que los datos JSON puedan cambiar en un futuro previsible, continúe con la siguiente opción.

2. Manera más difícil (pero más estable): llamar a métodos JsonPath desde Beanshell PostProcessor

JMeter tiene un mecanismo de extensión de scripting Beanshell que tiene acceso a todas las variables / propiedades en el alcance, así como a las API subyacentes de JMeter y dependencias de terceros. En este caso, puede llamar a la biblioteca JsonPath (que está bajo el capó de JsonPath Extractor) directamente desde Beanshell PostProcessor.

import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.JsonPath;

Object json = new String(data);
List categories = new ArrayList();
categories.add("fiction");
categories.add("reference");
Filter filter = Filter.filter(Criteria.where("category").in(categories));
List books = JsonPath.read(json, "$.store.book[?]", new Filter[] {filter});

vars.put("JSON_ARRAY_SIZE", String.valueOf(books.size()));

El código anterior evalúa la expresión JSONPath de $.store.book[?] contra la respuesta del muestreador principal, cuenta el número de coincidencias y lo almacena en ${JSON_ARRAY_SIZE} Variable JMeter

Variable JSON Beanshell

que luego se puede reutilizar en una cláusula if o una aserción.

Referencias:

  • JMeter – Trabajar con JSON – Extraer respuesta JSON
  • Entrada de expresiones regulares del Manual del usuario de JMeter
  • Documentación y ejemplos de rutas JSON
  • Cómo usar BeanShell: el componente integrado favorito de JMeter
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *