我的@RequestBody ObjectNode objectNode中的JSON

{
    "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 + "...");


我有一个结果:

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


但是当我这样做时:

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


我有 :

Update Script - Libelle Prerequis = ...


我想恢复我的“ LibellePrerequis”以将其集成到我实体中的脚本中(很多)

最佳答案

"libellePrerequis"是一个对象。

asText()仅在您的节点为值时才有效。

您可以使用objectNode.get("libellePrerequis").isValueNode();检查

要将节点对象获取为String,您需要使用toString()

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


编辑1:

要将节点转换为对象,您需要创建一些代表节点树的对象。

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中的名称相同,并注意其类型。因此,对象的名称(LibellTypologieProduit)的结构与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());

09-28 02:13