Salut à tous,
Je dois manipuler un fichier JSON dont voici un petit extrait :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | { "Personnes": [ { "identite": { "nom": "dupond", "prenom": "thomas"}, "sexe":"homme", "date naissance": "08/10/66", "adresse": "3 rue du port", "ville":"Vannes", "pays":"France", "lectures":[1, 2] }, ... ], "Livres": [ { "cle":"1", "titre":"Le Monde selon Garp", "auteur":"John Irving", "annee":"84" }, ... ] } |
Il s'agit donc d'un objet sans nom contenant deux arrays (Personnes et Livres) d'objets.
J'ai besoin d'utiliser ce fichier JSON en Java, avec l'API Jackson, afin de remplir une ArrayList<Personne> (et une structure de données similaire pour Livres, bref).
C'est la première fois que j'utilise Jackson, aussi j'ai fait quelques recherches sur Google pour savoir comment remplir mon ArrayList<Personne> avec des instances de Personne créées par Jackson. J'en suis venu à écrire cette ligne de code :
1 | ArrayList<Personne> personne = mapper.readValue(new File("testjson.json"), new TypeReference<ArrayList<Personne>>(){}); |
Or j'ai ce message d'erreur à la compilation :
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: testjson.json; line: 1, column: 1]
Je suppose que c'est parce que je dis à Jackson "Ouvre testjson.json, et remplis l'ArrayList<Personne> avec son contenu". Or le souci est que ce fichier ne contient pas juste un array Personnes, mais bien un objet contenant l'array Personnes et l'array Livres.
Du coup comme c'est la première fois que je touche à Jackson, je suis un peu perdu et ne vois pas trop comment me dépatouiller de cette situation… Serait-il possible que quelqu'un de familier à cette API m'aide s'il vous plaît ?
Merci d'avance !
Bonne journée !