Я использую пользовательскую десериализацию, но мне понадобится лучший мозг, чтобы решить это, чем мой.
для упрощения:
у меня есть один файл JSON, одна сущность, один класс десериализации и основной
сосредоточиться на EntityDeserialization (функция searchEntitie, которая принимает в качестве параметров param) и Main (переменная entity)
Entity.json
(rootEntity является объектом Entity)
[
{
"name": "BFA",
"entityType": "secteur",
"rootEntity": ""
},
{
"name": "IT",
"entityType": "service",
"rootEntity": ""
},
{
"name": "EX",
"entityType": "offre",
"rootEntity": "BFA"
}
]
Сущность класса
@JsonDeserialize(using = EntityDeserialization.class)
public class Entity {
private String name;
private String entityType;
private Entity rootEntity;
EntityDeserialization
public Entity deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException {
JsonNode node = jp.getCodec().readTree(jp);
String name = node.get("name").asText();
String entitype = node.get("entityType").asText();
String rootEntity = node.get("rootEntity").asText();
Entity entity = new Entity();
entity = entity.searchEntity(entities, rootEntity);
return new Entity(name, entitype,entity);
}
Главная
public static void main(String[] args) throws FileNotFoundException {
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
TypeReference<List<User>> typeReferenceUser = new TypeReference<>() {};
TypeReference<List<Entity>> typeReferenceEntity = new TypeReference<>() {};
FileInputStream inputStreamUser = new FileInputStream("C:\\Users\\oraph\\Desktop\\user.json");
FileInputStream inputStreamEntity = new FileInputStream("C:\\Users\\oraph\\Desktop\\entity.json");
try {
List<User> users = mapper.readValue(inputStreamUser,typeReferenceUser);
List<Entity> entities = mapper.readValue(inputStreamEntity,typeReferenceEntity);
...
Здесь проблемы:
Я присутствую, чтобы использовать свою функцию в EntityDeserialization searchEntity(List entity, String rootEntity)
, которая находится в основном и находится в процессе заполнения.