EDIT
Полезная нагрузка JSON проще, чем вы думаете.Для динамических клавиш используйте Map
.В вашем случае у вас есть Map
в Map
, потому что у вас есть два уровня динамических клавиш.Иногда генерируется POJO
из JSON
очень сложно.Вы должны сгенерировать POJO
модель из JSON Schema
.Ваша модель может выглядеть следующим образом:
class ApiWrapper {
private Api api;
// getters, setters, toString
}
class Api {
private int results;
private Map<String, Map<String, Match>> odds;
// getters, setters, toString
}
class Match {
private String label;
private String pos;
private String odd;
// getters, setters, toString
}
Перед редактированием
У вас есть два хитрых случая:
- Ключ с пробелами - необходимо использовать
JsonProperty
аннотацию. - Объект с динамическими ключами - его следует сопоставить с
Map<String, ?>
.
Простой пример с POJO
модель:
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.util.Map;
public class JsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
ObjectMapper mapper = new ObjectMapper();
ApiWrapper api = mapper.readValue(jsonFile, ApiWrapper.class);
System.out.println(api);
}
}
class ApiWrapper {
private Api api;
// getters, setters, toString
}
class Api {
private int results;
private Odds odds;
// getters, setters, toString
}
class Odds {
@JsonProperty("Win the match")
private Map<String, Match> winTheMatch;
// getters, setters, toString
}
class Match {
private String label;
private String pos;
private String odd;
// getters, setters, toString
}
См. Также: