5

在将 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"}]

谁可以帮我这个事。

提前致谢。

4

2 回答 2

14

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

注释

您可以使用字段或 getter 方法上的@JsonProperty 注释来注释您的对象。

例子:

@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
}
于 2012-06-15T10:50:09.697 回答
1

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

然而,afaik 没有策略可以满足您对全部大写字母的需求。但你可能只写你自己的。

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

于 2017-02-27T10:45:10.143 回答