杰克逊 - 将java对象转换为json - 需要所有关键键为大写

时间:2012-06-15 10:43:25

标签: java json object jackson uppercase

需要您的帮助才能将java对象转换为json。 当前json结果显示小写字母的所有键,我需要它是大写。

ObjectMapper mapper = new ObjectMapper();
Writer strWriter = new StringWriter();
mapper.writeValue(strWriter, obj);
String jsonString= strWriter.toString();

,结果是

[{"flags":"1","name":"Peter","location":"London","startDate":"2012-01-06 00:00"}]

但我想要这样的结果(所有关键键值应该是大写的):

[{"FLAGS":"YU","NAME":"Peter","LOCATION":"London","STARTDATE":"2012-01-06 00:00"}]

并且也可以这样(大写的关键首字母):

[{"Flags":"1","Name":"Peter","Location":"London","StartDate":"2012-01-06 00:00"}]

任何人都可以帮我这个。

提前致谢。

2 个答案:

答案 0 :(得分:13)

杰克逊有多种方法可以做到这一点。

注解

您可以在字段或getter方法上使用@JsonProperty annotations为对象添加注释。

示例:

@JsonProperty("Name")
public final String name;

@JsonProperty("Location")
public String getLocation() {
  return location;
}

实现JsonSerializableWithType接口

@Override
public void serialize(final JsonGenerator jG, final SerializerProvider p)
    throws IOException, JsonProcessingException
{
    serializeWithType(jG, p, null);
}

@Override
public void serializeWithType(final JsonGenerator jG, final SerializerProvider p, final TypeSerializer typeSer)
    throws IOException, JsonProcessingException
{
    // here you can do your own serialization
}

答案 1 :(得分:0)

我建议在课程级别使用@JsonNaming注释。

然而,afaik没有适合您对大写字母的需求的策略。但你可以写自己的。

在我的情况下,我需要第一个字符大写。所以我使用了现有的 @JsonNaming(value = UpperCamelCaseStrategy.class)