JSON。从一个json转换许多对象

时间:2014-05-20 12:36:07

标签: java 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文件中获取所有对象并将其添加到列表中?抱歉我的英文不好

2 个答案:

答案 0 :(得分:1)

如果你有一个User的JSON数组,你可以反序列化:

  • 作为User的集合:

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

  • 作为array

    User

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

SimY4指出,您可能需要修复JSON文件。

答案 1 :(得分:0)

试试这个:

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