自定义序列化杰克逊中的对象列表

时间:2018-03-28 20:51:50

标签: java json jackson

我有一个方法可以执行以下操作:

    final DaySerializer daySerializer = new DaySerializer(Day.class);
    final ObjectMapper mapper = new ObjectMapper();
    final SimpleModule module = new SimpleModule("DaySerializer", new Version(2, 1, 3, null, null, null));
    module.addSerializer(Day.class, daySerializer);

    mapper.registerModule(module);
    try {
        mapper.writerWithDefaultPrettyPrinter().writeValue(new File(this.jsonPath + "/Days.json"), days);

    } catch (final Exception e) {
        e.printStackTrace();
    }

序列化器类方法:

@Override
public void serialize(final Day day, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider)
        throws IOException {

    jsonGenerator.writeStartObject();
    //Date
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
    jsonGenerator.writeStringField("calendar", "" + format1.format(day.getCalendar().getTime()));
    //Day index
    jsonGenerator.writeNumberField("dayCount", day.getDayCount());

    //Demand
    for (final Entry<String, int[]> e : day.getDemand().entrySet()) {
        jsonGenerator.writeFieldName("Demand: "+e.getKey());
        jsonGenerator.writeStartArray();
        for(int i : e.getValue()) {
            jsonGenerator.writeNumber(i);
        }
        jsonGenerator.writeEndArray();  
    }

    //Employee shift allocations
    for(EmployeeShiftAllocation eSA : day.getEmployeeShiftAllocations()) {
        jsonGenerator.writeNumberField("eSA ID", eSA.getId());
    }


    jsonGenerator.writeEndObject();
}

哪个适用于列表中的第一个Day对象,但是没有显示任何错误,只导出第一个Day对象。这是令人困惑的,因为我交进了List。我错过了一些简单的事吗?我需要以某种方式在序列化器内处理这个吗?

0 个答案:

没有答案