If you have dynamic keys, you can use Map<K, V> . The type of keys and values ββdepends on your needs.
The simplest approach is Map<String, Object> . For this you need TypeReference<T> :
ObjectMapper mapper = new ObjectMapper(); Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
Assuming your keys are valid, you can use Map<LocalDate, Object> .
The following dependency is required:
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>${jackson.version}</version> </dependency>
Then you can:
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); Map<LocalDate, Object> map = mapper.readValue(json, new TypeReference<Map<LocalDate, Object>>() {});
Finally, you can map the values ββof dynamic keys to a Java class. Let me call him Foo :
public class Foo { private Integer downloads; @JsonProperty("re_downloads") private Integer reDownloads; private Integer updates; private Integer returns; @JsonProperty("net_downloads") private Integer netDownloads; private Integer promos; private String revenue; @JsonProperty("returns_amount") private String returnsAmount; @JsonProperty("edu_downloads") private Integer eduDownloads; private Integer gifts; @JsonProperty("gift_redemptions") private Integer giftRedemptions;
And then you can have Map<LocalDate, Foo> :
ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(new JavaTimeModule()); Map<LocalDate, Foo> map = mapper.readValue(json, new TypeReference<Map<LocalDate, Foo>>() {});