2014-05-20 3 views
0

si j'ai JSON simple avecJson. la conversion de nombreux objets d'un JSON

{ 
    "age":29, 
    "messages":["msg 1","msg 2","msg 3"], 
    "name":"mkyong" 
} 

-je utiliser ce code

public class JacksonExample { 

    public static void main(String[] args) { 

    ObjectMapper mapper = new ObjectMapper(); 

    try { 

     // read from file, convert it to user class 
     User user = mapper.readValue(new File("c:\\user.json"), User.class); 

     // display to console 
     System.out.println(user); 

    } catch (JsonGenerationException e) { 

     e.printStackTrace(); 

    } catch (JsonMappingException e) { 

     e.printStackTrace(); 

    } catch (IOException e) { 

     e.printStackTrace(); 

    } 

    } 

} 

et obtenir, un objet. mais si j'ai

{ 
    "age":29, 
    "messages":["msg 1","msg 2","msg 3"], 
    "name":"alice" 
} 
{ 
    "age":18, 
    "messages":["msg 4","msg 5","msg 6"], 
    "name":"bob" 
} 

comment puis-je obtenir tous les objets d'un fichier json et ajouter leur à la liste? désolé pour mon mauvais anglais

+1

La chose que vous essayez d'analyser n'est pas un JSON valide. Vous devriez l'inclure dans un tableau ou quelque chose du genre: '[{" age ": 29, ...}, {" age ": 18, ...}]'. Sur la façon d'analyser un tableau, vous pouvez lire [ici] (http://stackoverflow.com/questions/6349421/how-to-use-jackson-to-deserialise-an-array-of-objects) – SimY4

+0

oh, il 's simplement moyen – mechanikos

+0

essayez ceci [link] (http://stackoverflow.com/a/18959730/1283215) –

Répondre

1

Si vous avez un tableau JSON de User s vous pouvez désérialiser:

  • En tant que collection de User:

    om.readValue("myFile", new TypeReference<Collection<User>>() {});

  • En tant array de User

    om.readValue("myFile", User[].class);

Vous allez probablement avoir besoin de votre fichier JSON à fixer, comme l'a souligné SimY4.

0

Essayez ceci:

Class<?> clz = Class.forName(type); 
JavaType listType = mapper.getTypeFactory().constructCollectionType(List.class, clz); 
List <T> record = mapper.readValue(json, listType); 
+0

merci, je vais essayer – mechanikos