2014-05-20 12 views
0

, если у меня есть простой JSON сJson. преобразование многих объектов из одного JSON

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

я использую этот код

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(); 

    } 

    } 

} 

и получить, один объект. но что, если у меня есть

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

Как я могу получить все объекты из одного json-файла и добавить их в список? извините за мой плохой английский

+1

То, что вы пытаетесь разобрать, не является действительным JSON. Вы должны обернуть его в массив или что-то вроде этого: '[{" age ": 29, ...}, {" age ": 18, ...}]'. О том, как разбирать массив, вы можете прочитать [здесь] (http://stackoverflow.com/questions/6349421/how-to-use-jackson-to-deserialise-an-array-of-objects) – SimY4

+0

oh, it 's просто путь – mechanikos

+0

попробуйте это [ссылка] (http://stackoverflow.com/a/18959730/1283215) –

ответ

1

Если у вас есть массив JSON из User s вы можете десериализации:

  • В коллекции User:

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

  • В качестве array из User

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

Вы, вероятно, понадобится ваш файл в формате JSON, чтобы быть фиксированным, как отметил SimY4.

0

Попробуйте это:

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

спасибо, я попробую – mechanikos

Смежные вопросы