Jackson将json字符串转换成ListJavaBean
Jackson处理⼀般的JavaBean和Json之间的转换只要使⽤ObjectMapper 对象的readValue和writeValueAsString两个⽅法就能实现。但是如果要转换复杂类型Collection如 List<YourBean>,那么就需要先反序列化复杂类型为泛型的Collection Type。
json转换对象如果是ArrayList<YourBean>那么使⽤ObjectMapper 的getTypeFactory().constructParametricType(collectionClass, elementClasses);
如果是HashMap<String,YourBean>那么 ObjectMapper 的getTypeFactory().constructParametricType(HashMap.class,String.class, YourBean.class);
譬如,我有如下⼀个Config.java对象
1public class Config {
2private String name;
3private String value;
4
5public Config() {
6 }
7
8public Config(String name, String value) {
9this.name = name;
10this.value = value;
11 }
12 }
如果我需要将json字符串转换为Config对象数组,即执⾏反序列号,则需要执⾏以下的⽅法:
1public final ObjectMapper mapper = new ObjectMapper();
2
3public static void main(String[] args) throws Exception{
4
5 String jsonString = getConfig(); //getConfig省略
6
7//List<Config> configList = (List<Config>)jsonString
8//上⾯这样转换是错的,但是编译没有报错,运⾏时才报错
9
10 JavaType javaType = getCollectionType(ArrayList.class, Config.class);
11 List<Config> configList = adValue(jsonString, javaType); //这⾥不需要强制转换
12 }
13
14
15/**
16* 获取泛型的Collection Type
17* @param collectionClass 泛型的Collection
18* @param elementClasses 元素类
19* @return JavaType Java类型
20* @since 1.0
21*/
22public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
TypeFactory().constructParametricType(collectionClass, elementClasses);
24 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论