как сопоставить Java-кодированный объект с помощью JSON - PullRequest
0 голосов
/ 23 мая 2019

Я создаю API Календаря Google, и мне не хватает понимания пункта с моими json-файлами.

Мне удается создать мой java-объект с моими json-файлами, но здесь проблема:

iесть два класса:

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 я пишу имя объекта, я не хочу писать тип сущности и rootEntity, потому что если я пишу имя объекта - BFA, это всегда будет тот же RightType и rootEntity.Другими словами, моя сущность 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",
    }
  }
]

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

В Json-lib у вас есть JsonConfig для указания разрешенных полей:

JsonConfig jsonConfig=new JsonConfig();
jsonConfig.registerPropertyExclusion(Entity.class,"rootEntity");
jsonConfig.registerPropertyExclusion(Entity.class,"entityType");

JSON json = JSONSerializer.toJSON(objectToWrite,jsonConfig);
0 голосов
/ 23 мая 2019

Полагаю, аннотация @JsonIgnore com.fasterxml.jackson должна помочь.

public class Entity {
    private String  name;
    @JsonIgnore
    private String entityType;
    @JsonIgnore
    private Entity rootEntity;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...