当前位置: 首页 > 知识库问答 >
问题:

Jackson映射到json并改变大小写

翟曦
2023-03-14

我想将map转换为json,但使用jackson更改大小写。例如,我有这个地图:

 "test_first" -> 1,
 "test_second" -> 2,

我想将其转换为 json,但从下划线大小写更改为较低的驼峰大小写。我该怎么做?使用这个没有帮助:

// Map<String, String> fields;

var mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE); 
// setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE) didn't help too
String json = mapper.writeValueAsString(fields);

共有2个答案

马沛
2023-03-14

使用@Json属性注释。在您的属性变量或其getter上执行以下操作:

@JsonProperty("testFirst")
String test_first;

@JsonProperty("testSecond")
String test_second;

显然,您也可以使用< code>@JsonSetter和< code > @ JSON setter 注释作为替代。请参阅杰克逊注释示例一文

干茂才
2023-03-14

Jackson中有< code>StringKeySerializer,它可以实现更改某些地图中键的显示的功能(例如,使用Guava CaseFormat):

// custom key serializer
class SnakeToCamelMapKeySerialiser extends StdKeySerializers.StringKeySerializer {
    @Override
    public void serialize(Object value, JsonGenerator g, SerializerProvider provider)
            throws IOException {
        g.writeFieldName(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, (String) value));
    }
}

// map with the custom serializer
@JsonSerialize(keyUsing = SnakeToCamelMapKeySerialiser.class)
class MyMap<K extends String, V> extends HashMap<K, V> {
}

然后,使用所需的格式对地图进行序列化:

Map<String, Integer> map = new MyMap<>();
map.put("first_key", 1);
map.put("second_key", 2);

ObjectMapper mapper = new ObjectMapper();


String json = mapper.writeValueAsString(map);

System.out.println(json);
// -> {"firstKey":1,"secondKey":2}
 类似资料:
  • 我不清楚jackson是如何处理映射字段中的大写字母的。如果有人能帮忙,我将不胜感激。 上面是我的json,下面是我的例外。。。 上面是我的例外,下面是我的班级。。。 ... 等等

  • 我和jackson一起绘制地图,我有点迷茫。我的Json具有以下结构 我确实找到了很多处理数组的教程,但我在第一个标记“d”时就已经失败了。而且根本不需要所有的“_元数据”标记。 我创建了一个包含lastName等属性和一个集合附件的pojo。但我的代码在标记“d”或“_元数据”时总是失败 还有杰克逊的读者 任何提示都将不胜感激。 问候马蒂亚斯

  • 问题内容: 我不清楚杰克逊如何处理映射字段中的大写字母。如果有人可以帮忙,我将不胜感激。 上面是我的json,下面是我的例外… 上面是我的例外,下面是我的课… …等等 问题答案: 由于您的设置方法命名为Jackson,因此假设变量的命名是基于Java的 命名约定 (变量应以小写字母开头)。 如果您真的想要一个大写字母,请使用 setter 上的 @JsonProperty 注释(或-进行序列化-在

  • 我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢

  • 假设我有这样的物体 我正在使用RestTemboard类从URL中获取json,如下所示: 之后,我想使用jackson对象映射器将json字符串转换为一个对象 将实体类作为第二个参数传递 问题是我应该如何编写ExampleJson实体来处理get-Showed json?我试过这样上课,但似乎不管用。 我得到了这样一个例外:

  • 问题内容: 我有一个来自API的Date格式,如下所示: 这是YYYY-DD-MM HH:MM am / pm GMT时间戳。我将此值映射到POJO中的Date变量。显然,其显示转换错误。 我想知道两件事: 与Jackson进行转换时,我需要使用哪种格式?Date是否适合此字段类型? 通常,是否有一种方法可以在Jackson将变量映射到Object成员之前处理这些变量?诸如更改格式,计算等。 问题