com.fasterxml.jackson.databind.ObjectMapper
jackson可以方便地实现对象和json字串的转换,但是如果json字串的键是大写字母开头的话,默认情况下会出错。如何处理在这里有说明:http://unmi.cc/jackson-java-object-json-string。使用ObjectMapper的setPropertyNamingStrategy方法。首先自己定义个描述大写字母开头的类
import com.fasterxml.jackson.databind.PropertyNamingStrategy.PropertyNamingStrategyBase;
public class UpperCasePropertyNamingStrategy extends PropertyNamingStrategyBase {
private static final long
serialVersionUID
= -5054105970777634248L;
@Override
public String translate(String propertyName) {
String name = propertyName.replaceAll("^\\w", propertyName.toUpperCase().substring(0,1));
return name;
}
}
这样使用
import com.fasterxml.jackson.databind.ObjectMapper;
...
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new UpperCasePropertyNamingStrategy());
mapper.setDateFormat(...);
DataParams p = mapper.readValue(source, DataParams.class);
有时不是直接返回一个对象,而是一个对象数据或集合,这时可以这样写
import com.fasterxml.jackson.core.type.TypeReference;
...
DataParams jsonArray = mapper.readValue(source, DataParams[].class);
List<DataParams > jsonArray = mapper.readValue(source, new TypeReference<List<DataParams >>() {});
或者
List<DataParams > jsonArray = mapper.readValue(source, mapper.getTypeFactory().constructCollectionType(List.class, DataParams .class));