У меня была аналогичная проблема, но с использованием списка с большим количеством JSON itens (List<String>
).
public class Errors {
private Integer status;
private List<String> jsons;
}
Мне удалось сериализовать, используя аннотацию @JsonRawValue
. Но для десериализации мне пришлось создать собственный десериализатор, основанный на предложении Роя.
public class Errors {
private Integer status;
@JsonRawValue
@JsonDeserialize(using = JsonListPassThroughDeserialzier.class)
private List<String> jsons;
}
Ниже вы можете увидеть мой десериализатор «Список».
public class JsonListPassThroughDeserializer extends JsonDeserializer<List<String>> {
@Override
public List<String> deserialize(JsonParser jp, DeserializationContext cxt) throws IOException, JsonProcessingException {
if (jp.getCurrentToken() == JsonToken.START_ARRAY) {
final List<String> list = new ArrayList<>();
while (jp.nextToken() != JsonToken.END_ARRAY) {
list.add(jp.getCodec().readTree(jp).toString());
}
return list;
}
throw cxt.instantiationException(List.class, "Expected Json list");
}
}
После шага nest
мы можем просмотреть «данные» list
в mutate
, используя map
, затем выполнить group_by
и summarise
с ним
library(tidyverse)
NBA%>%
group_by(season)%>%
nest() %>%
mutate(data = map(data, ~ .x %>%
group_by(player)%>%
summarise(shots_attempts_ratio=sum(shot_made)/n(),
total_attempts=n(),
shots=sum(shot_made))
)) %>%
unnest