EN
Java - deserialize JSON array to java object with Jackson lib (from json string to java object)
3 points
Quick solution:
xxxxxxxxxx
1
import com.fasterxml.jackson.core.JsonProcessingException;
2
import com.fasterxml.jackson.databind.ObjectMapper;
3
4
import java.util.Arrays;
5
6
public class JacksonDeserializeArray {
7
8
public static void main(String[] args) throws JsonProcessingException {
9
10
String usersJson =
11
"[{\"name\":\"Kate\",\"age\":24}," +
12
"{\"name\":\"John\",\"age\":26}," +
13
"{\"name\":\"Ann\",\"age\":25}]";
14
15
ObjectMapper objectMapper = new ObjectMapper();
16
User[] users = objectMapper.readValue(usersJson, User[].class);
17
18
System.out.println(Arrays.toString(users));
19
}
20
21
private static class User {
22
private String name;
23
private int age;
24
25
// Jackson requires to have this constructor
26
public User() {
27
28
}
29
30
public User(String name, int age) {
31
this.name = name;
32
this.age = age;
33
}
34
35
public String getName() {
36
return name;
37
}
38
39
public int getAge() {
40
return age;
41
}
42
43
44
public boolean equals(Object o) {
45
if (this == o) return true;
46
if (o == null || getClass() != o.getClass()) return false;
47
48
User user = (User) o;
49
50
if (age != user.age) return false;
51
return name != null ? name.equals(user.name) : user.name == null;
52
}
53
54
55
public int hashCode() {
56
int result = name != null ? name.hashCode() : 0;
57
result = 31 * result + age;
58
return result;
59
}
60
61
62
public String toString() {
63
return "User{" +
64
"name='" + name + '\'' +
65
", age=" + age +
66
'}';
67
}
68
}
69
}
Create users json string from java User objects:
xxxxxxxxxx
1
import com.fasterxml.jackson.core.JsonProcessingException;
2
import com.fasterxml.jackson.databind.ObjectMapper;
3
4
import java.util.ArrayList;
5
import java.util.List;
6
7
public class ConvertUsersToJson {
8
9
public static void main(String[] args) throws JsonProcessingException {
10
List<User> users = new ArrayList<>();
11
users.add(new User("Kate", 24));
12
users.add(new User("John", 26));
13
users.add(new User("Ann", 25));
14
15
ObjectMapper objectMapper = new ObjectMapper();
16
String usersJson = objectMapper.writeValueAsString(users);
17
18
// [{"name":"Kate","age":24},{"name":"John","age":26},{"name":"Ann","age":25}]
19
System.out.println(usersJson);
20
}
21
22
private static class User {
23
private String name;
24
private int age;
25
26
// Jackson requires to have this constructor
27
public User() {
28
29
}
30
31
public User(String name, int age) {
32
this.name = name;
33
this.age = age;
34
}
35
36
public String getName() {
37
return name;
38
}
39
40
public int getAge() {
41
return age;
42
}
43
44
45
public boolean equals(Object o) {
46
if (this == o) return true;
47
if (o == null || getClass() != o.getClass()) return false;
48
49
User user = (User) o;
50
51
if (age != user.age) return false;
52
return name != null ? name.equals(user.name) : user.name == null;
53
}
54
55
56
public int hashCode() {
57
int result = name != null ? name.hashCode() : 0;
58
result = 31 * result + age;
59
return result;
60
}
61
62
63
public String toString() {
64
return "User{" +
65
"name='" + name + '\'' +
66
", age=" + age +
67
'}';
68
}
69
}
70
}