【问题标题】:Jackson - converting java object to json - Need all key keys to upper case杰克逊 - 将 java 对象转换为 json - 需要所有键为大写
【发布时间】:2012-06-18 10:26:35
【问题描述】:

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

谁能帮帮我。

提前致谢。

【问题讨论】:

    标签: java json object jackson uppercase


    【解决方案1】:

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

    注释

    您可以在您的字段或您的 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
    }
    

    【讨论】:

      【解决方案2】:

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

      然而,afaik 没有策略可以满足您对全部大写的需求。不过你也可以自己写。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多