0

I'm having a problem with deserializing json object into DTO class. The dto object has the following structure:

@Getter
@Setter
@ToString
@RequiredArgsConstructor
@JsonIgnoreProperties(value = { "charsetinfo" })
public class SingleEngineJsonDto {
    public List<SingleEngineDTO> engine;
    public List<Timetable> timetable;
    public List<Dailytable> dailytable;
}

And the output is:

       [SingleEngineJsonDto(engine=null, timetable=null, dailytable=null),
 SingleEngineJsonDto(engine=[SingleEngineDTO(name=state, … some data)], 
    timetable=[Timetable(weekDay=1,some data), more data], 
    dailytable=[Dailytable(date=2018-05-09, more data), more data])]

How do I get rid of this([SingleEngineJsonDto(engine=null, timetable=null, dailytable=null)) part? Original json contains metadata, that I don't need. The firs object in a big json object is ignored metadata and null fields, the second one is null fields filled in. The only idea that I have is list.get(1). And I was told that this solution is wrong.

UPDATE: Original json structure:

 [{"charsetinfo":{"name": "utf-8"}},{"engine":
[{"NAME": "stock","title": some data}],
    "timetable":[{"week_day":1,"is_work_day":1,some data},
     more data],"dailytable":[{"date": "2018-05-09","is_work_day":0,"start_time": "10:00:00",data}]}]

Desirialization:

@FeignClient(value = "engine", url = "engine")
public interface EngineClient {
    @GetMapping
    List<EngineJsonDto> getEngines(URI enginesUri,
                                   @RequestParam(value = "lang", required = false) String lang);
    @GetMapping
    List<SingleEngineJsonDto> getEngine(URI engineUri, @RequestParam(value = "lang", required = false) String lang);
}

Service gets the data from client and gets a list of dto to work with. I use facory pattern to get pieces of data to work with parameters(engine,timetable,dailytable), and all of them had to look the same:

@Service
public class EngineParamEngine implements EngineFactoryInterface {

    @Override
    public List<SingleEngineDTO> getEngineObjectPart(List<SingleEngineJsonDto> list){
        return list.get(1).getEngine();  //<<this
    }
}

I was told to change it to list.get(0).Which gives me (engine=null, timetable=null, dailytable=null). So, I need to make the first object disappear somehow. I'm sorry, English is not my first language and I'm new to programming.

SoN
  • 3
  • 4
  • There isn’t enough information to answer this, and the title and text of the question don’t seem to match up. Please edit the question to include the code that deserialises the JSON and prints the output, an example of the JSON data it receives, and the output you expect from it. – Tim Moore Sep 06 '22 at 23:58
  • Is the question about how to remove the first element from a list? If so, what specific data structure are you using? – Tim Moore Sep 07 '22 at 00:00
  • I added more information – SoN Sep 07 '22 at 12:28

0 Answers0