最近有个需求是调用人家的webservice向他们传数据,要格式化为json字符串,咱JAVA可以面向对象的语言,当然是把需要的格式设计成类喽,然后再调用nf.json进行转换。
但是却有个问题,我的属性名都是小写的,可以对方要求JSON的key全部为大写。百度了大半天发现了方法
需要调用JsonConfig
这个配置类,具体实现这个功能的是registerJsonPropertyNameProcessor
这个属性
由于有多个需要转换的处理类,写在了一个父类里,转换时继承这个类调用这个方法即可
public abstract class convertJsonArrHandler<T> {
protected Class<T> aClass;
public convertJsonArrHandler(){
ParameterizedType pa= (ParameterizedType) this.getClass().getGenericSuperclass();
this.aClass= (Class) pa.getActualTypeArguments()[0];
}
public JSONArray getJsonArr(List<RequestModel<T>> list){
JsonConfig jsonConfig=new JsonConfig();
PropertyNameProcessor propertyNameProcessor=new PropertyNameProcessor() {
@Override
public String processPropertyName(Class aClass, String s) {
System.out.println("aClass = [" + aClass + "], s = [" + s + "]");
return s.toUpperCase();
}
};
jsonConfig.registerJsonPropertyNameProcessor(RequestModel.class,propertyNameProcessor);
jsonConfig.registerJsonPropertyNameProcessor(aClass,propertyNameProcessor);
JSONArray jsonArray=JSONArray.fromObject(list,jsonConfig);
return jsonArray;
}
}