【问题标题】:JAVA ObjectNode get is emptyJAVA ObjectNode 获取为空
【发布时间】:2019-09-24 19:51:38
【问题描述】:

@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”以将其集成到我的实体中的脚本中(多对多)

【问题讨论】:

  • 只是一个小问题,objectNode.get("libellePrerequis").isValueNode(); 的结果是什么?
  • 值为“假”
  • 你试过objectNode.get("libellePrerequis").toString();吗?
  • 我不知道为什么我确定我试过了,但不!我只是把这个和它的作品。谢谢

标签: java json spring spring-boot spring-mvc


【解决方案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 中的名称相同,并注意它们的类型。因此,对象的名称(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());

【讨论】:

    猜你喜欢
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多