好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用Jackson实现Map与Bean互转方式

Jackson Map与Bean互转

在使用 java 开发中,通常需要把 Map 转成 Bean,或把 Bean 转成 Map,这就用的工具类,在此推荐使用import com.fasterxml.jackson.databind.ObjectMapper;包下的ObjectMapper类,比 JsonObject 效率高

下面就列举了几种使用方法

1、pom.xml

?

1

2

3

4

5

6

< dependency >

     < groupId >com.fasterxml.jackson.core</ groupId >

     < artifactId >jackson-databind</ artifactId >

     < version >2.9.6</ version >

     < scope >compile</ scope >

</ dependency >

2、java 代码

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

package com.jin.demo.jackson;

import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.HashMap;

import java.util.Map;

/**

  * 使用 Jackson工具

  * map to bean

  * bean to map

  *

  * @auther jinsx

  * @date 2019-03-26 16:37

  */

public class JacksonTest {

     private static final ObjectMapper mapper = new ObjectMapper();

     public static void main(String[] args) throws Exception {

         // 测试 将Map转成指定的Bean

         Map<String, Object> map = new HashMap<>();

         map.put( "name" , "张三" );

         Person o = (Person)JacksonTest.mapToBean(map, Person. class );

         System.out.println(o);

         // 测试 将Bean转成Map

         Person person = new Person();

         person.setAge( 18 );

         Map map1 = JacksonTest.beanToMap(person);

         System.out.println(map1);

     }

     // 将对象转成字符串

     public static String objectToString(Object obj) throws Exception {

         return mapper.writeValueAsString(obj);

     }

     // 将Map转成指定的Bean

     public static Object mapToBean(Map map, Class clazz) throws Exception {

         return mapper.readValue(objectToString(map), clazz);

     }

     // 将Bean转成Map

     public static Map beanToMap(Object obj) throws Exception {

         return mapper.readValue(objectToString(obj), Map. class );

     }

}

3、Person 类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

package com.jin.demo.jackson;

import java.io.Serializable;

import java.util.Date;

/**

  * @auther jinsx

  * @date 2019-03-26 17:30

  */

public class Person implements Serializable {

     private int age;

     private String name;

     private Date birthday;

     public int getAge() {

         return age;

     }

     public void setAge( int age) {

         this .age = age;

     }

     public String getName() {

         return name;

     }

     public void setName(String name) {

         this .name = name;

     }

     public Date getBirthday() {

         return birthday;

     }

     public void setBirthday(Date birthday) {

         this .birthday = birthday;

     }

     @Override

     public String toString() {

         return "Person{" +

                 "age=" + age +

                 ", name='" + name + '\ '' +

                 ", birthday=" + birthday +

                 '}' ;

     }

}

Jackson-ObjectMapper json字符串、bean、map、list互相转换

1、对象转json字符串

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

User user = new User();

String userJson = mapper.writeValueAsString(user);

2、Map转json字符串

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

Map map = new HashMap();

String json = mapper.writeValueAsString(map);

3、数组list转json字符串

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

User[] uArr = {user1, user2};

String jsonfromArr = mapper.writeValueAsString(uArr);

4、json字符串转对象

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

String expected = "{\"name\":\"ZhangSan\"}" ;

User user = mapper.readValue(expected, User. class );

5、json字符串转Map

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

String expected = "{\"name\":\"ZhangSan\"}" ;

Map userMap = mapper.readValue(expected, Map. class );

6、json字符串转对象数组List

?

1

2

3

4

ObjectMapper mapper = new ObjectMapper();

String expected = "[{\"name\":\"Zhangsan\"},{\"name\":\"Lisi\"}]" ;

CollectionType listType = mapper.getTypeFactory().constructCollectionType(ArrayList. class , User. class );

List<User> userList = mapper.readValue(expected, listType);

7、json字符串转Map数组List<Map<String,Object>>

?

1

2

3

4

ObjectMapper mapper = new ObjectMapper();

String expected = "[{\"name\":\"Zhangsan\"},{\"nameEn\":\"Lisi\"}]" ;

CollectionType listType = mapper.getTypeFactory().constructCollectionType(ArrayList. class , Map. class );

List<Map<String,Object>> userList = mapper.readValue(expected, listType);

8、jackson默认将对象转换为LinkedHashMap

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

String expected = "[{\"name\":\"Zhangsan\"},{\"nameEn\":\"Lisi\"},{\"name\":\"Test\"}]" ;

ArrayList arrayList = mapper.readValue(expected, ArrayList. class );

9、json字符串转对象设置格式

?

1

2

3

4

5

6

ObjectMapper mapper = new ObjectMapper();

//设置date转换格式

SimpleDateFormat fmt = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );

mapper.setDateFormat(fmt);

String expected = "{\"name\":\"ZhangSan\",\"bir\":\"2021-04-15 14:00:00\"}" ;

User user = mapper.readValue(expected, User. class );

10、忽略未知字段

?

1

2

3

4

5

ObjectMapper mapper = new ObjectMapper();

//设置忽略未知字段

mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false );

String expected = "{\"name\":\"ZhangSan\",\"job\":\"teacher\"}" ;

User user = mapper.readValue(expected, User. class );

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/axing2015/article/details/88827053

查看更多关于使用Jackson实现Map与Bean互转方式的详细内容...

  阅读:12次