4.1.6. Набор данных JSON

JSON – набор данных формируется из данных в формате JSON, которые могут быть получены из следующих источников:

  1. Groovy script

    Скрипт задается пользователем и должен возвращать JSON как строку, например:

    return '''
            {
              "items": [
                {
                  "name": "Java Concurrency in practice",
                  "price": 15000
                },
                {
                  "name": "Clear code",
                  "price": 13000
                },
                {
                  "name": "Scala in action",
                  "price": 12000
                }
              ]
            }
            '''
  2. URL

    Генератор отчётов запрашивает данные через URL с помощью GET HTTP-запроса, например:

    https://jsonplaceholder.typicode.com/users
  3. Parameter

    Внешний параметр отчёта с типом String, содержащий данные JSON, можно создать на вкладке Parameters and Formats редактора отчётов.

Извлечь необходимые данные из полученного дерева JSON можно запросом JsonPath. К примеру, выражение $.store.book[*] вернет все книги из дерева JSON в следующем примере:

{
    "store": {
    "book": [
            {
                "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,
                "isbn": "0-553-21311-3"
            }
    ],
    "bicycle": {
        "color": "red",
        "price": 19.95
    }
}
}

Более подробно о выражениях JsonPath можно посмотреть на http://goessner.net/articles/JsonPath/.

Поля, выводимые отчётом, имеющие типы данных Date, DateTime, Time, не поддерживают формат, определённый по правилам java.text.SimpleDateFormat. Для задания корректного формата вам следует написать скрипт на Groovy.

Для этого перейдите на вкладку Parameters and Formats редактора отчёта и откройте форму добавления формата. Например, для поля отчёта bookPublication.dateTime Groovy-скрипт будет иметь следующий вид:

import java.text.SimpleDateFormat

def simpleOldDateFormat = new SimpleDateFormat('yyyy-MM-dd HH:mm')
def simpleNewDateFormat = new SimpleDateFormat('dd/MM/yyyy HH:mm')
def oldDate = simpleOldDateFormat.parse(value)

return simpleNewDateFormat.format(oldDate)