首页 > 解决方案 > 如何使用 JSON 映射 java 嵌入对象

问题描述

我建立了一个谷歌日历 API,我想念我的 json 文件的一点。

我成功地用我的 json 文件创建了我的 java 对象,但这里的问题是:

我有两节课:

public class User {
    private String email;
    private String firstname;
    private String lastname;
    Entity entity;
 ``

and my Entity

``  public class Entity {
    private String  name;
    private String entityType;
    private Entity rootEntity;``

here my json file :
for user

``[
  {
    "firstname": "Jean-Marc",
    "lastname": "Chevereau",
    "email": "xxxxxxx@xxxxx.com",
    "entity": {
        "name":"BFA",
        "entityType":"secteur"
    }
  },
    {
    "firstname": "Florent",
    "lastname": "Hamlin",
    "email": "xxxxxxx@xxxxx.com",
     "entity": {
        "name":"IT",
        "entityType":"secteur"
    }
  },
  {
    "firstname": "Benoit",
    "lastname": "Micaud",
    "email": "xxxxxxx@xxxxx.com",
    "entity": {
        "name":"EX",
        "entityType":"offre",
        "rootEntity":{
            "name":"BFA"
          }
        }
      }
    ]``

And a Entity json file

```[ 
   {
    "name": "BFA",
    "entityType": "secteur",
    "rootEntity": "",

  },
  {
   "name": "EX",
    "entityType": "Offre",
    "rootEntity": "BFA",
    }
  }
]

但麻烦就在这里。如果在我的 User.json 中写实体名称,我不想写实体类型和根实体,因为如果我写实体名称是 BFA,它将始终是相同的实体类型和根实体。换句话说,我的 json 实体将始终是相同的,如果我只是输入我们所知道的引用实体对象的名称。

例如,在这个 user.json 文件中,我只需要将

[
  {
    "firstname": "Jean-Marc",
    "lastname": "Chevereau",
    "email": "xxxxxxx@xxxxx.com",
    "entity": {
        "name":"BFA",

    }
  },
    {
    "firstname": "Florent",
    "lastname": "Hamlin",
    "email": "xxxxxxx@xxxxx.com",
     "entity": {
        "name":"IT",

    }
  },
  {
    "firstname": "Benoit",
    "lastname": "Micaud",
    "email": "xxxxxxx@xxxxx.com",
    "entity": {
        "name":"EX",
    }
  }
]

标签: javajsonobject

解决方案


我想 com.fasterxml.jackson 的 @JsonIgnore 注释应该会有所帮助。

public class Entity {
    private String  name;
    @JsonIgnore
    private String entityType;
    @JsonIgnore
    private Entity rootEntity;
}

推荐阅读