JSON Разбор возвращает значение NULL в функции поиска JSONSlurper. - PullRequest
1 голос
/ 15 апреля 2020

Я работаю над проектом с использованием Amazon CLI и Groovy. Я анализирую возвращенные данные JSON и получаю странную ошибку нулевого указателя.

Caught: java .lang.NullPointerException: Невозможно получить свойство Instance для нулевого объекта java .lang.NullPointerException: Невозможно получить свойство 'Instance' для нулевого объекта в jsonGroovy .run (jsonGroovy. groovy: 16)

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

#!/usr/local/bin/groovy
import groovy.json.*

def proc7 = "aws ec2 describe-instances  --query Reservations[*].Instances[*]. 
  {Instance:InstanceId,Name:Tags} --output json".execute().text

//Returns value of above is printed here.
println "scriptOutput: ${proc7}"

def json = new groovy.json.JsonSlurper().parseText(proc7)
String instanceId = json.Instance
String Value = json.Name.Value;
println(Value) // Prints the names of the VM's expected

def name = json.find{it.Name.Value }.Name.Value //This returns successfully the first VM

//THIS BREAKS... THIS CODE BELOW With the equals in which is exactly what is printed and returned by the above code breaks. It seems to break whether the value is hard coded or not.

  //  name = json.find{it.Name.Value == '[[UbuntuVM5]]' }.Name.Value

def ID = json.find{it.Name.Value == name}.Instance // This then finds the value based on the 
    return of [[UbuntuVM5]] and returns correctly.


println name //Prints [[UbuntuVM5]]
println ID // [i-024f810433daa995c]

Сценарий ВЫХОД без == в имени

scriptOutput: [
[
    {
        "Instance": "i-024f810433daa995c",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM5"
            }
        ]
    }
],
[
    {
        "Instance": "i-080691a105fdda539",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM"
            }
        ]
    }
],
[
    {
        "Instance": "i-02a1dae13ff48a7b0",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM4"
            }
        ]
    }
],
[
    {
        "Instance": "i-0e079e0cbf4ec7cd4",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM3"
            }
        ]
    }
],
[
    {
        "Instance": "i-0bab4d6f41fa0ba02",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM2"
            }
            ]
        }
    ]
]

[[[UbuntuVM5]], [[UbuntuVM]], [[UbuntuVM4]], [[UbuntuVM3]], [[UbuntuVM2]]]
[[UbuntuVM5]]
[i-024f810433daa995c]
instance id : [[i-024f810433daa995c], [i-080691a105fdda539], [i-02a1dae13ff48a7b0], [i-0e079e0cbf4ec7cd4], [i-0bab4d6f41fa0ba02]]

Сценарий РЕЗУЛЬТАТ С == в имени

scriptOutput: [
[
    {
        "Instance": "i-024f810433daa995c",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM5"
            }
        ]
    }
],
[
    {
        "Instance": "i-080691a105fdda539",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM"
            }
        ]
    }
],
[
    {
        "Instance": "i-02a1dae13ff48a7b0",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM4"
            }
        ]
    }
],
[
    {
        "Instance": "i-0e079e0cbf4ec7cd4",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM3"
            }
        ]
    }
],
[
    {
        "Instance": "i-0bab4d6f41fa0ba02",
        "Name": [
            {
                "Key": "Name",
                "Value": "UbuntuVM2"
            }
        ]
        }
    ]
]

[[[UbuntuVM5]], [[UbuntuVM]], [[UbuntuVM4]], [[UbuntuVM3]], [[UbuntuVM2]]]
Caught: java.lang.NullPointerException: Cannot get property 'Name' on null object
java.lang.NullPointerException: Cannot get property 'Name' on null object
  at jsonGroovy.run(jsonGroovy.groovy:14)

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

...