Преобразование нескольких объектов json в массив объектов Java - PullRequest
0 голосов
/ 18 июня 2020

Мои данные в настоящее время хранятся в этом формате:

{
   "label":["X","Y"],
   "data":{
      "site1":{
         "week":[
            {
               "idWeek":"9",
               "max":2,
               "min":0
            }
         ]
      },
      "site2":{
         "week":[
            {
               "idWeek":"9",
               "max":2,
               "min":0
            }
         ]
      }
   }
}

И мне нужно преобразовать их в этот формат:

{
   "label":["X","Y"],
   "myClient":{
      "week":[
         {
            "id":"9",
            "access":2,
            "lost":0
         }
      ]
   }
}

Как видите, мне также нужно взять ключи (имя сайта), и мне нужно удалить «данные» и изменить имя свойства.

Есть идеи, как я могу сделать это в Java (я использую Java 8 с Spring Boot? Я не очень хорошо умею реструктурировать этот тип данных.

ОБНОВЛЕНИЕ

Мои решения: я использовал разные интерфейсы и использовал RestTemplate! Я не знаю, что это лучшее решение, однако оно сработало.

public Optional<Consolidate> getCasosPorEstado() {
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<Consolidate> res = restTemplate.exchange(PATH_CONSOLIDATE, HttpMethod.GET, null,
            new ParameterizedTypeReference<Consolidate>() {
            });

    return Optional.of(res.getBody());
}


@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "label", "data" })
@Data
public class Consolidate {

    @JsonProperty("label")
    private List<String> labels = null;

    @JsonProperty("data")
    private MyClient client;    

}

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "site1" })
class MyClient {
    @JsonProperty("Site")
    Site SiteObject;    
}   


@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "week" })
class MS {
    @JsonProperty("week")
    private List<Week> week = null;
}


@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Semana {
    @JsonAlias("idWeek")
    private String id;

    @JsonAlias("max")
    private Double access;

    @JsonAlias("min")
    private Double lost;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...