Учебники

Groovy — JSON

В этой главе рассказывается, как использовать язык Groovy для анализа и создания объектов JSON.

Функции JSON

Sr.No Функции и библиотеки
1

JsonSlurper

JsonSlurper — это класс, который анализирует текст JSON или контент читателя в данные Groovy.

Структуры, такие как карты, списки и примитивные типы, такие как Integer, Double, Boolean и String.

2

JsonOutput

Этот метод отвечает за сериализацию объектов Groovy в строки JSON.

JsonSlurper

JsonSlurper — это класс, который анализирует текст JSON или контент читателя в данные Groovy.

Структуры, такие как карты, списки и примитивные типы, такие как Integer, Double, Boolean и String.

JsonOutput

Этот метод отвечает за сериализацию объектов Groovy в строки JSON.

Разбор данных с использованием JsonSlurper

JsonSlurper — это класс, который анализирует текст JSON или контент для чтения в структурах данных Groovy, таких как карты, списки и типы примитивов, такие как Integer, Double, Boolean и String.

Синтаксис

def slurper = new JsonSlurper()

JSON slurper анализирует текст или контент читателя в структуру данных списков и карт.

Класс JsonSlurper поставляется с несколькими вариантами реализации парсера. Иногда у вас могут быть разные требования, когда дело доходит до разбора определенных строк. Давайте рассмотрим случай, когда нужно прочитать JSON, который возвращается из ответа от веб-сервера. В таком случае выгодно использовать вариант парсера JsonParserLax. Этот анализатор допускает комментарии в тексте JSON, а также строки кавычек и т. Д. Чтобы указать этот тип синтаксического анализатора, вам нужно использовать тип синтаксического анализатора JsonParserType.LAX при определении объекта JsonSlurper.

Давайте посмотрим на пример, приведенный ниже. Пример для получения данных JSON с веб-сервера с использованием модуля http. Для этого типа обхода лучший вариант — установить для типа синтаксического анализатора вариант JsonParserLax.

http.request( GET, TEXT ) {
   headers.Accept = 'application/json'
   headers.'User-Agent' = USER_AGENT
	
   response.success = { 
      res, rd ->  
      def jsonText = rd.text 
		
      //Setting the parser type to JsonParserLax
      def parser = new JsonSlurper().setType(JsonParserType.LAX)
      def jsonResp = parser.parseText(jsonText)
   }
}

Аналогично в Groovy доступны следующие дополнительные типы парсеров:

  • Парсер JsonParserCharArray в основном принимает строку JSON и работает с базовым символьным массивом. Во время преобразования значения он копирует символьные подмассивы (механизм, известный как «измельчение») и работает с ними индивидуально.

  • JsonFastParser является специальным вариантом JsonParserCharArray и является самым быстрым анализатором. JsonFastParser также известен как анализатор наложения индекса. Во время синтаксического анализа данной строки JSON он старается изо всех сил избегать создания новых массивов символов или экземпляров String. Он просто сохраняет указатели только на исходный массив символов. Кроме того, он откладывает создание объекта как можно позже.

  • JsonParserUsingCharacterSource — это специальный анализатор для очень больших файлов. Он использует технику, называемую «символьное оконное управление», для анализа больших файлов JSON (в данном случае больших означает файлы размером более 2 МБ) с постоянными характеристиками производительности.

Парсер JsonParserCharArray в основном принимает строку JSON и работает с базовым символьным массивом. Во время преобразования значения он копирует символьные подмассивы (механизм, известный как «измельчение») и работает с ними индивидуально.

JsonFastParser является специальным вариантом JsonParserCharArray и является самым быстрым анализатором. JsonFastParser также известен как анализатор наложения индекса. Во время синтаксического анализа данной строки JSON он старается изо всех сил избегать создания новых массивов символов или экземпляров String. Он просто сохраняет указатели только на исходный массив символов. Кроме того, он откладывает создание объекта как можно позже.

JsonParserUsingCharacterSource — это специальный анализатор для очень больших файлов. Он использует технику, называемую «символьное оконное управление», для анализа больших файлов JSON (в данном случае больших означает файлы размером более 2 МБ) с постоянными характеристиками производительности.

Разбор текста

Давайте посмотрим на некоторые примеры того, как мы можем использовать класс JsonSlurper.

Live Demo

import groovy.json.JsonSlurper 

class Example {
   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      def object = jsonSlurper.parseText('{ "name": "John", "ID" : "1"}') 
		
      println(object.name);
      println(object.ID);
   } 
}

В приведенном выше примере мы —

  • Сначала создаем экземпляр класса JsonSlurper

  • Затем мы используем функцию parseText класса JsonSlurper для анализа некоторого текста JSON.

  • Когда мы получаем объект, вы можете видеть, что мы можем получить доступ к значениям в строке JSON через ключ.

Сначала создаем экземпляр класса JsonSlurper

Затем мы используем функцию parseText класса JsonSlurper для анализа некоторого текста JSON.

Когда мы получаем объект, вы можете видеть, что мы можем получить доступ к значениям в строке JSON через ключ.

Вывод вышеуказанной программы приведен ниже —

John 
1

Разбор списка целых чисел

Давайте посмотрим на другой пример метода синтаксического анализа JsonSlurper. В следующем примере мы вставляем список целых чисел. Из следующего кода вы заметите, что мы можем использовать метод List каждого из них и передать ему закрытие.

Live Demo

import groovy.json.JsonSlurper 
class Example {
   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      Object lst = jsonSlurper.parseText('{ "List": [2, 3, 4, 5] }')
      lst.each { println it }
   } 
}

Вывод вышеуказанной программы приведен ниже —

List=[2, 3, 4, 5]

Разбор списка примитивных типов данных

Анализатор JSON также поддерживает примитивные типы данных: строка, число, объект, истина, ложь и ноль. Класс JsonSlurper преобразует эти типы JSON в соответствующие типы Groovy.

В следующем примере показано, как использовать JsonSlurper для анализа строки JSON. И здесь вы можете видеть, что JsonSlurper способен анализировать отдельные элементы в их соответствующие примитивные типы.

Live Demo

import groovy.json.JsonSlurper 
class Example {

   static void main(String[] args) {
      def jsonSlurper = new JsonSlurper()
      def obj = jsonSlurper.parseText ''' {"Integer": 12, "fraction": 12.55, "double": 12e13}'''
		
      println(obj.Integer);
      println(obj.fraction);
      println(obj.double); 
   } 
}

Вывод вышеуказанной программы приведен ниже —

12 
12.55 
1.2E+14 

JsonOutput

Теперь поговорим о том, как напечатать вывод в Json. Это можно сделать методом JsonOutput. Этот метод отвечает за сериализацию объектов Groovy в строки JSON.

Синтаксис

Static string JsonOutput.toJson(datatype obj)

Параметры — параметры могут быть объектом типа данных — число, логическое значение, символ, строка, дата, карта, замыкание и т. Д.

Тип возвращаемого значения — тип возвращаемого значения — строка json.

пример

Ниже приведен простой пример того, как этого можно достичь.

import groovy.json.JsonOutput 
class Example {
   static void main(String[] args) {
      def output = JsonOutput.toJson([name: 'John', ID: 1])
      println(output);  
   }
}

Вывод вышеуказанной программы приведен ниже —

{"name":"John","ID":1}

JsonOutput также можно использовать для простых старых шпунтованных объектов. В следующем примере вы можете видеть, что мы фактически передаем объекты типа Student в метод JsonOutput.

Live Demo

import groovy.json.JsonOutput  
class Example {
   static void main(String[] args) {
      def output = JsonOutput.toJson([ new Student(name: 'John',ID:1),
         new Student(name: 'Mark',ID:2)])
      println(output);  
   } 
}
 
class Student {
   String name
   int ID; 
}

Вывод вышеуказанной программы приведен ниже —