我的@RequestBody ObjectNode objectNode中的JSON
<svg viewBox="-12 -12 24 24" width="100">
<path d="M0,-10 L10,0 0,10" />
</svg>
<svg viewBox="-12 -12 24 24" width="100">
<path d="M0,-10 L-10,0 0,10" />
</svg>
<svg viewBox="-12 -12 24 24" width="100">
<path d="M-10,0 L0,-10 10,0" />
</svg>
<svg viewBox="-12 -12 24 24" width="100">
<path d="M-10,0 L0,10 10,0" />
</svg>
当我这样做时:
{
"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 + "...");
我想恢复我的“ LibellePrerequis”以将其集成到我实体中的脚本中(很多)。
答案 0 :(得分:1)
"libellePrerequis"
是一个对象。
asText()
仅在您的节点为值时才有效。
您可以使用objectNode.get("libellePrerequis").isValueNode();
要将节点对象获取为String,您需要使用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());