杰克逊:将值打印为JSON中的关键字

时间:2014-05-13 09:18:09

标签: java json jackson

通常我们在Jackson中打印一个类作为JSON对象的方法是定义getter和setter,如

public class MyClass
{
    private Integer a;
    private Integer b;

    public myClass(Integer a, Integer b)
    {
        this.a = a;
        this.b = b;
    }

    @JsonProperty
    public Integer getA()
    {
        return a;
    }

    @JsonProperty
    public Integer getB()
    {
        return b;
    }

    public void setA(Integer a)
    {
        this.a = a;
    }

    public void setB(Integer b)
    {
        this.b = b;
    }

}

这将返回{"a":1,"b":2}

但是我可以获得{1:2}的输出而不是之前的输出吗?

2 个答案:

答案 0 :(得分:0)

为了实现这一点,您需要编写自己的代码并相应地传递。但是您显示的输出是标准的json格式,您无法更改,但绝对可以使用代码更改它。

答案 1 :(得分:0)

如果您不关心输出JSON无效,则可以为POJO类编写自定义序列化程序。它看起来像这样:

class MyClassJsonSerializer extends JsonSerializer<MyClass> {
    @Override
    public void serialize(MyClass myClass, JsonGenerator generator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        generator.writeStartObject();

        generator.writeRaw(myClass.getA() + ":" + myClass.getB());

        generator.writeEndObject();
    }
}

使用:

@JsonSerialize(using = MyClassJsonSerializer.class)
class MyClass {
....
}

从现在起,您的POJO应序列化为所需的输出。