如何在使用Jackson序列化期间删除“key”和“:”之间的空格?[副本]

7uhlpewt  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(233)

此问题已在此处有答案

Jackson custom serializer json format(3个答案)
上个月关门了。
我在用Jackson库进行序列化。要缩进输出,我有以下代码
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
这会导致添加我不需要的空格。比如说

{
  "id" : 2,
  "name" : "theUser"
}

我希望我的输出是

{
  "id": 2,
  "name": "theUser"
}

基本上,我希望键和之间的空间:被移除有没有一个简单的方法来摆脱这个额外的空间?

kxeu7u2r

kxeu7u2r1#

虽然Ivar提供了答案already in his comment,但下面是我的实现,它返回您想要的结果。

DefaultPrettyPrinter pp = new MyPrettyPrinter();

        ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);;
        try {
            jsonResult = mapper.writer(pp)
                    .writeValueAsString(map);
        }
        catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }

其中MyPrettyPrinter如下:

public class MyPrettyPrinter extends DefaultPrettyPrinter {

@Override
public DefaultPrettyPrinter createInstance() {
    return new MyPrettyPrinter();
}

@Override
public void writeObjectFieldValueSeparator(JsonGenerator jg) throws IOException {
    jg.writeRaw(": ");
}

}

相关问题