我想用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
每个字段的情况下映射这些内容。
自动化的最佳做法是什么?