杰克逊 - 使用JSON集合序列化Java类

时间:2018-03-01 20:28:33

标签: java json collections jackson

我有一个名为Account的Java类。我希望序列化项目列表以及每个Account实例。我该怎么做呢?此外,是否可以将帐户存储到一个文件,然后将项目存储到单独的文件(几乎像数据库)?

public class Account {

    private String id;
    private String name;
    private List<Item> items;
    ...
}

我创建了一个自定义序列化程序,用于将Account类的实例写入JSON文件。

public class AccountSerializer extends StdSerializer<Account> {

    public AccountSerializer() {
        this(null);
    }

    public AccountSerializer(Class<Account> t) {
        super(t);
    }

    @Override
    public void serialize(Account account, JsonGenerator jgen, SerializerProvider provider) {
        try {
            jgen.writeStartObject();
            jgen.writeStringField("id", account.getId());
            jgen.writeStringField("name", account.getName());
            jgen.writeEndObject();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

然后我使用以下方法写入文件:

public void setAccounts(List<Account> accounts) {
        ObjectMapper objectMapper = new ObjectMapper();

        SimpleModule simpleModule = new SimpleModule("AccountSerializer");
        simpleModule.addSerializer(Account.class, new AccountSerializer());

        objectMapper.registerModule(simpleModule);

        try {
            objectMapper.writeValue(new File(fileName), accounts);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

0 个答案:

没有答案
相关问题