Разбор json в json Студия Groovy Katalon - PullRequest
0 голосов
/ 14 февраля 2019

Я получил текст в формате JSON, который мне нужно проанализировать, но по какой-то причине я не могу его проанализировать, потому что внутри него есть другой массив.Мой JSON выглядит так:

{
   "statementId": "1",
   "movements": [
      {
         "id": 65,
         "date": "2019-02-05",
         "number": 32,
         "balance": -4.62,
         "purpose": "1"
      },
      {
         "id": 1,
         "date": "2019-02-05",
         "number": 22,
         "balance": -3,
         "purpose": "23"
      },
      {
         "id": 32,
         "date": "2019-02-05",
         "number": 12,
         "balance": -11,
         "purpose": "2"
      }
   ],
   "startPointer": "1122",
   "endPointer": "3333"
}

Я использую JsonSlurper.Я хочу знать, возможно ли перехватить все данные внутри «движений», я пытался использовать этот скрипт:

JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(bodyContent)
String parsed_movements = parsedJson["movements"]

У меня нет проблем с разбором отдельных строк, таких как StatementId или StartPointer, нокогда я пытаюсь разобрать движения со своим сценарием, это дает мне результат как ноль.Я также пытался parsedJson ["движения"] [0], чтобы поймать первое движение, но это также дает мне ошибку.

Я нашел много вещей о парсерах json в интернете, а также в stackoverflow, но ничего из того, что я ищу.Я действительно не думаю, что это повторяющийся вопрос.

РЕДАКТИРОВАТЬ: Я пытался для утверждения, чтобы поместить каждый объект в массив, как это: def движения_array = []

for(def i = 0; i < parsedJson.movements.size(); i++) {
    movements_array << parsedJson.movements[i].id
    println(movements_array)
}

Но это дает мне ошибку: невозможно вызвать метод size () для нулевого объекта, потому что parsedJson.movements имеет значение null.

1 Ответ

0 голосов
/ 14 февраля 2019

Когда вы делаете:

String parsed_movements = parsedJson["movements"]

Вы вставляете карту в строку, а это не то, что вам нужно.

Учитывая json в вашем вопросе, вы можете простоdo

def movementIds = new JsonSlurper().parseText(bodyContents).movements.id

Чтобы получить список [65, 1, 32]

Если вы получаете NPE, я предполагаю, что json - это не то, что вы показываете в вопросе

...