首先,创建个实体类Person

import java.util.List;public class Person {private String name;private Integer age;private Gender gender;private List<String> hobbies;public enum Gender {MALE("male"),FEMALE("female");private String desc;Gender(String desc) {this.desc = desc;}}public Person() {}public Person(String name) {this.name = name;}public Person(String name, Integer age) {this.name = name;this.age = age;}public Person(String name, Integer age, Gender gender) {this.name = name;this.age = age;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Gender getGender() {return gender;}public void setGender(Gender gender) {this.gender = gender;}public List<String> getHobbies() {return hobbies;}public void setHobbies(List<String> hobbies) {this.hobbies = hobbies;}
}

下面开始创建对象集合personList,先用ObjectMapper将对象集合读成数组json字符串,然后用ObjectMapper将数组json字符串转回对象集合。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;public class JsonDemo {public static void main(String[] args) throws JsonProcessingException {//创建对象集合,添加元素List<Person> personList = new ArrayList<>();personList.add(new Person("Tom", 18, Person.Gender.MALE));personList.add(new Person("Jim", 19, Person.Gender.MALE));personList.add(new Person("John", 18, Person.Gender.MALE));personList.add(new Person("Jacky", 19, Person.Gender.MALE));personList.add(new Person("Lily", 17, Person.Gender.FEMALE));personList.add(new Person("Lucy", 17, Person.Gender.FEMALE));personList.add(new Person("Rose", 18, Person.Gender.FEMALE));personList.add(new Person("Nancy", 18, Person.Gender.FEMALE));//循环遍历,往集合里继续添加元素for (int i = 0; i < 5; i++) {personList.addAll(personList);}//打印集合的元素个数System.out.println("personList.size: " + personList.size());ObjectMapper objectMapper = new ObjectMapper();//将对象集合读成数组jsonString personListJson = objectMapper.writeValueAsString(personList);//将数组json转成对象集合,方式1:ZonedDateTime start = ZonedDateTime.now(ZoneId.of("GMT+8"));System.out.println("start: " + start.toString());//关键:使用 objectMapper 的 readValue(String content, TypeReference<T> valueTypeRef) 方法List<Person> personList1 = objectMapper.readValue(personListJson, new TypeReference<List<Person>>() {});ZonedDateTime end = ZonedDateTime.now(ZoneId.of("GMT+8"));System.out.println("end: " + end.toString());long between = ChronoUnit.MILLIS.between(start, end);//方式1比较简单,但是耗时较多,是方式2的几十倍System.out.println("between: " + between);//将数组json转成对象集合,方式2:start = ZonedDateTime.now(ZoneId.of("GMT+8"));System.out.println("start: " + start.toString());//关键:使用 objectMapper 的 readValue(String content, JavaType valueType) 方法//注意:此方法返回的是Object,特此这里用了类型强转为ListList o = (List) objectMapper.readValue(personListJson, objectMapper.getTypeFactory().constructParametricType(List.class, Person.class));end = ZonedDateTime.now(ZoneId.of("GMT+8"));System.out.println("end: " + end.toString());long until = start.until(end, ChronoUnit.MILLIS);//方式2略复杂,但是耗时较少System.out.println("until: " + until);}}

Jackson:数组json字符串转对象集合(List)的两种方式相关推荐

  1. 遍历集合常见的两种方式

    package sun;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.u ...

  2. 关于虚拟机中对象访问定位的两种方式的一些思考

    前言 本文是在周志明老师经典作品<深入理解Java虚拟机>第二章第三节的基础上对句柄和直接指针两种对象访问方式的深入思考,有不准确的地方希望读者不吝赐教. JVM中访问对象的两种方式 1. ...

  3. java json 对象如何对属性排序_Java对象集合、对象数组如何排序?你需要知道这两种方式...

    一.引子 在比较Java对象时,正常情况下,我们只能使用==或!=进行比较,而不能使用>或者<这样的运算符. 那么问题来了,开发过程中我们经常要对多个对象排序,排序必然需要比较,那么如何实 ...

  4. js对象取值的两种方式及区别

    var obj = {abc:"ss",nn:90}; var v1 = obj.abc;//使用点的方式 var v2 = obj["abc"];//使用中括 ...

  5. c#谷歌 json转对象_利用Google Gson实现JSON字符串和对象之间相互转换

    最近一个项目需要用到JSON,需要在JSON字符串和对象之间相互转换,在网上找了些资料,发现google的Gson还是比较不错的. 废话不说,下面是简单的例子: 先上源码:下载(包含jar包) Per ...

  6. 二维数组的认识及其表示元素的两种方式

    /*============================================================================Name : TeatArr.cAuthor ...

  7. Json字符串转对象和转List集合操作(json-lib版本)

    Json字符串转对象和转List集合操作(json-lib版本) Json是当前开发用得最多基于JavaScript语言的轻量级的数据交换格式,总结一下常用转换格式的方法,以便日后使用方便 以下为 j ...

  8. Json字符串转对象和转List集合操作(alibabab版本)

    Json字符串转对象和转List集合操作(alibabab版本) Json是当前开发用得最多基于JavaScript语言的轻量级的数据交换格式,总结一下常用转换格式的方法,以便日后使用方便 以下为 a ...

  9. Json字符串和对象相互转换

    文章目录 1.JsonUtil 工具类 把对象转换为json字符串 把json字符串转换为对象 把json字符串转换为List集合 2.Gson 把对象转换为json字符串 把json字符串转换为对象 ...

最新文章

  1. Windows驱动开发 - 派遣函数
  2. Java之Character类
  3. 取生产订单状态的逻辑
  4. 谭浩强课后题之----求和,其中a是一个数字,n表示a的位数
  5. JavaScript 图片上传预览效果
  6. John the Ripper 密码破解者
  7. python chardet_Python - chardet
  8. 计算机组成原理课设参考文献,计算机组成原理课程设计(全)..doc
  9. java 小程序--杨辉三角
  10. IBGP的自己下一跳,指定源命令。
  11. 网页三剑客8免费下载加序列号
  12. 国科大-2019-2020年,黄庆明模式识别与机器学习作业答案(黄庆明,常虹,郭嘉丰,山世光)
  13. 微信小程序轮播中的current_五分钟掌握微信小程序轮播图
  14. [渝粤教育] 内蒙古大学 微生物学 参考 资料
  15. 渐变背景怎么搞?2分钟教你制作渐变背景
  16. 前沿探索:腾讯云数据库自治服务最佳实现
  17. JAVA ik es_Elasticsearch入门和查询语法分析(ik中文分词)
  18. 人工智能成功与冠状病毒抗争,但个人隐私令人担忧
  19. [Irving]Sql Server 日期、时间、比较
  20. React中的SVG陷阱

热门文章

  1. 抗原试剂盒也卷起来了,我的塑料袋不会影响房价吧?
  2. 当你看到曾经自己的代码时...
  3. 我是如何做到的:不切换 Git 分支,同时在多个分支上工作的?
  4. 聊一聊:Service层你觉得有用吗?
  5. 为什么 Java 不支持运算符重载?
  6. 没了解过条件注解@ConditionalOn..?Spring Boot白学了!
  7. Tensor for ‘out‘ is on CPU, Tensor for argument #1 ‘self‘ is on CPU
  8. reg 只能导入二进制注册文件
  9. vlfeat 特征检测
  10. yolo v3 fatal : Memory allocation failure