JAVA ObjectNode get пуст - PullRequest
       2

JAVA ObjectNode get пуст

0 голосов
/ 07 мая 2019

Мой JSON в моем @RequestBody ObjectNode objectNode

{
    "script":
        {"id":2,"nom":"tes","libelleprerequiss":
        [{"id":1,"libelle_prerequis":"Soc devis VAM","produit":{"id":1,"nom":"VAM"},"typologie":{"id":1,"nom":"devis"}}]
        },
    "libellePrerequis":
        {"id":3,"libelle_prerequis":"Soc contrat VAM","produit":{"id":1,"nom":"VAM"},"typologie":{"id":2,"nom":"contrat"}
        }
}

Когда я делаю:

    String id_script = objectNode.get("script").get("id").asText();
    String id_libelleprerequis = objectNode.get("libellePrerequis").get("id").asText();
    System.out.println("Script ID = " + id_script + "...");
    System.out.println("Libelle Prerequis ID = " + id_libelleprerequis + "...");

i У меня есть результат:

Update Script - Script ID = 2...
Update Script - Libelle Prerequis ID = 3...

Но когда яdo:

String libelleprerequis = objectNode.get("libellePrerequis").asText();
System.out.println("Update Script - Libelle Prerequis = " + libelleprerequis + "...");

У меня есть:

Update Script - Libelle Prerequis = ...

Я хотел бы восстановить мою "LibellePrerequis", чтобы интегрировать ее в мой сценарий в моей сущности (многие ко многим)

1 Ответ

1 голос
/ 07 мая 2019

"libellePrerequis" это объект.

asText() работает, только если ваш узел является значением.

Вы можете проверить с помощью objectNode.get("libellePrerequis").isValueNode();

Чтобы получить объект узла в виде строки, вам необходимо использовать toString():

objectNode.get("libellePrerequis").toString();

EDIT1:

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

public class Libell{

    private int id;
    private String libelle_prerequis;
    private Produit produit;
    private Typologie typologie;

    //getters, setters

}

public class Typologie{

    private int id;
    private String nom;

    //getters, setters

}

public class Produit{

    private int id;
    private String nom;

    //getters, setters

}

Самое важное - иметь одинаковое имя для атрибутов (id, libelle_prerequis, ...) как в json и обратите внимание на их тип.Таким образом, имя объектов (Libell, Typologie и Produit) не имеет значения, если их структура похожа на json.

Теперь, чтобы сопоставить ваш JSonNode с объектом, который выможно сделать это:

ObjectMapper objMap = new ObjectMapper();

Libell libell = objMap.convertValue(objectNode.get("libellePrerequis"), Libell.class);

System.out.println(libell.getId());
System.out.println(libell.getProduit().getId());
System.out.println(libell.getTypologie().getId());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...