将一个String类型的json数据转成对应实体的List集合
来源:互联网 发布:手机淘宝1元夺宝在哪 编辑:程序博客网 时间:2024/06/05 12:49
这个借助了
import com.fasterxml.jackson.databind.JavaType;
使用下面这个方法做转换,可以说是一个工具吧,注意一下,constructParametricType()这个方法其实已经作废了
public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) { ObjectMapper mapper = new ObjectMapper(); return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);}
下面来转一下,这里的PsOrg是一个POJO
String returnObj = jso.get("returnObj").toString(); JavaType javaType = getCollectionType(ArrayList.class, PsOrg.class); List<PsOrg> psOrgList = (List<PsOrg>) objectMapper.readValue(returnObj, javaType);
还有一些其他方法,比如google的Gson,方法里的str就是一个json类型的字符串
Gson gson = new Gson();List<String> mfgLines = gson.fromJson(str, new TypeToken<List<String>>() {}.getType());
还有个更方便的方法,使用阿里的fastjson,只需要一行代码
List<Model> list = JSON.parseArray("你的json字符串", Model.class); (Model是你的实体)如果两边的字段数量不一致,可以在你的实体类上添加下面注解
@JsonIgnoreProperties(ignoreUnknown = true)
附录:我们看一下那个作废的方法以及新的替换方法
源码
/** * @deprecated Since 2.5, use {@link #constructParametrizedType} instead. */ @Deprecated public JavaType constructParametricType(Class<?> parametrized, Class<?>... parameterClasses) { return constructParametrizedType(parametrized, parametrized, parameterClasses); }/** * Factory method for constructing {@link JavaType} that * represents a parameterized type. For example, to represent * type <code>List<Integer></code>, you could * call *<pre> * TypeFactory.constructParametrizedType(List.class, List.class, Integer.class); *</pre> *<p> * The reason for first two arguments to be separate is that parameterization may * apply to a super-type. For example, if generic type was instead to be * constructed for <code>ArrayList<Integer></code>, the usual call would be: *<pre> * TypeFactory.constructParametrizedType(ArrayList.class, List.class, Integer.class); *</pre> * since parameterization is applied to {@link java.util.List}. * In most cases distinction does not matter, but there are types where it does; * one such example is parameterization of types that implement {@link java.util.Iterator}. *<p> * NOTE: type modifiers are NOT called on constructed type itself; but are called * when resolving <code>parameterClasses</code> into {@link JavaType}. * * @param parametrized Type-erased type of instance being constructed * @param parametersFor class or interface for which type parameters are applied; either * <code>parametrized</code> or one of its supertypes * @param parameterClasses Type parameters to apply * * @since 2.5 */ public JavaType constructParametrizedType(Class<?> parametrized, Class<?> parametersFor, Class<?>... parameterClasses) { int len = parameterClasses.length; JavaType[] pt = new JavaType[len]; for (int i = 0; i < len; ++i) { pt[i] = _fromClass(parameterClasses[i], null); } return constructParametrizedType(parametrized, parametersFor, pt); }可以仔细看一下注释,说的很清晰,我还没尝试这个
阅读全文
0 0
- 将一个String类型的json数据转成对应实体的List集合
- 将List<Map<String,String>型的数据,变成一个JSON对象。
- 使用VS2013将JSON/XML数据转换为对应的数据实体
- java将json格式的字符串转成实体对象
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
- 将Object类型转成String类型的几种方法
- C#将任意类型数据转成JSON格式输出的类
- js中的Array对象转成字符串;java中的List转成String数组, List集合的合并
- 如何将集合这种的转成JSON格式
- 将数据遍历插入到List集合里面的实体类中
- 将JSON格式数据转换成适用于SimpleAdapter的数据形式List<Map<String, String>>
- java中将String类型的数据转成Blob类型
- json <--->List集合,实体类 之间的相互转换
- 类型转换——如何将一个List<Map<String,String>>类型换成json格式
- 使用jdom将String类型的xml字符串转成xml
- 使用jackson将JSON字符串转成List集合
- [Unity&数组&List&JSON]创建一个字符串数组string[]类型的list
- Java List、Set去重实体对象类型的集合
- iOS 11 将于9月19日正式发布,一文带你了解它的那些特性
- Java输入输出流
- Hadoop 从windows环境下在eclipse上提交mapreducer程序过程
- 线程阻塞与唤醒
- 面向对象三大基本特性,五大基本原则
- 将一个String类型的json数据转成对应实体的List集合
- python web开发视频百度网盘下载?
- java文件操作之创建目录
- alsa交叉编译
- 微信小程序
- PL/SQL Developer使用技巧、快捷键
- Redis中删除过期Key的三种策略
- 《TP5.0学习笔记---百度地图封装》
- ch6树与二叉树