Java中Json转换为bean key大写转小写
问题
获取第三方接口时,发现给的JSON数据中有的key是大写字母开头的,如
JSON 数据为:
{"Id":"9uiafcba-r423-438e-df0c-a1d34e3faa91","Name":"yiyehu"}
Java Bean 为:
public class DetailDto {
private String guid;
private String name;
get; set;
}
通过JSONObject.toBean(jsonObject, DetailDto.class); 把JSON转换成Bean的时候,因为属性名不匹配,所以Bean对象中全为空。
解决方案:重写 JavaIdentifierTransformer
private JsonConfig getJsonConfig(Class clazz) {
JsonConfig config = new JsonConfig();
config.setJavaIdentifierTransformer(new JavaIdentifierTransformer() {
@Override
public String transformToJavaIdentifier(String str) {
if(StringUtils.isEmpty(str)){
return str;
}
return str.substring(0,1).toLowerCase().concat(str.substring(1));
}
});
config.setRootClass(clazz);
return config;
}
通过JSONObject.toBean(jsonObject, getJsonConfig(DetailDto.class));把JSON转换成Bean,成功。