使用gson将下划线字段改为大写

时间:2016-07-25 09:26:44

标签: java gson

我想用json将json中的下划线字段名称映射为大写。

例如,

{"item" : "hello", "this_field_to_mapped":1}

public class MyItem{
 private String item;
 private int thisFieldToMapped; // this from this_field_to_mapped
}

我使用构建器创建了Gson对象,但此字段值为0。

private class UnderScoreToUpper implements FieldNamingStrategy{

    @Override
    public String translateName(Field f) {

        String name = f.getName();

        Pattern p = Pattern.compile("[_][a-z]{1}");

        Matcher m = p.matcher(name);

        while(m.find()){
            System.out.println("matched : " + m.group(0));
            String c = m.group(0).replace("_", "").toUpperCase();
            name = name.replace(m.group(0), c);
        }

        System.out.println("replaced : " + name);

        return name;
    }

}

@SuppressWarnings("unchecked")
public <T> T query(Type typeOfT) {

    Gson g = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd HH:mm:ss")
            .setFieldNamingStrategy(new UnderScoreToUpper())
            .serializeSpecialFloatingPointValues()
            .setPrettyPrinting()
            .serializeNulls().create();

    String jsonString = this.query();
    T res = (T) g.fromJson(jsonString, typeOfT);

    return res;
}

我尝试了另一种添加@SerializedName的做法。

public class MyItem{
 private String item;
 @Serializedname("this_field_to_mapped") private int thisFieldToMapped; // this from this_field_to_mapped
}

但是,我想在不添加@serializedName每个字段的情况下映射这些内容。

自动化的最佳做法是什么?

0 个答案:

没有答案