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