-
Notifications
You must be signed in to change notification settings - Fork 8
/
ComplexDataBindingJackson.java
40 lines (28 loc) · 1.64 KB
/
ComplexDataBindingJackson.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package lol.gilliard.jsonparse.databinding.complex.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lol.gilliard.jsonparse.SourceData;
import lol.gilliard.jsonparse.databinding.complex.jackson.generated.NeoDetails;
import lol.gilliard.jsonparse.databinding.complex.jackson.generated.NeoWsDataJackson;
import java.util.Collection;
import java.util.Comparator;
public class ComplexDataBindingJackson {
public static void main(String[] args) throws JsonProcessingException {
NeoWsDataJackson neoWsDataJackson = new ObjectMapper()
.registerModule(new JavaTimeModule())
.readValue(SourceData.asString(), NeoWsDataJackson.class);
System.out.println("NEO count: " + neoWsDataJackson.elementCount);
System.out.println("Potentially hazardous asteroids: " +
neoWsDataJackson.nearEarthObjects.values()
.stream().flatMap(Collection::stream) // this converts a Collection of Collections of objects into a single stream
.filter(neo -> neo.isPotentiallyHazardousAsteroid)
.count());
NeoDetails fastestNeo = neoWsDataJackson.nearEarthObjects.values()
.stream().flatMap(Collection::stream)
.max( Comparator.comparing( neo -> neo.closeApproachData.get(0).relativeVelocity.kilometersPerSecond ))
.get();
System.out.println(String.format("Fastest NEO is: %s at %f km/sec",
fastestNeo.name, fastestNeo.closeApproachData.get(0).relativeVelocity.kilometersPerSecond));
}
}