Jackson库---ObjectMapper使用详解

ObjectMapper类是Jackson库的主要类。
功能 : Java对象与匹配的JSON结构之间的转换。
原理:使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。
使用:
pom.xml:

	<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
    </dependency>



	public static ObjectMapper mapper = new ObjectMapper();
	static {
   		 // 转换为格式化的json
    	 mapper.enable(SerializationFeature.INDENT_OUTPUT);

    	// 如果json中有新增的字段并且是实体类类中不存在的,不报错
    	mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
	}

1、对象与json字符串、byte数组

mapper.writeValue(new File("D:/test.txt"), user); // 写到文件中
// mapper.writeValue(System.out, user); //写到控制台

String jsonStr = mapper.writeValueAsString(user);
System.out.println("对象转为字符串:" + jsonStr);

byte[] byteArr = mapper.writeValueAsBytes(user);
System.out.println("对象转为byte数组:" + byteArr);

XwjUser userDe = mapper.readValue(jsonStr, XwjUser.class);
System.out.println("json字符串转为对象:" + userDe);

XwjUser useDe2 = mapper.readValue(byteArr, XwjUser.class);
System.out.println("byte数组转为对象:" + useDe2);

运行结果:

对象转为字符串:{
  "id" : 1,
  "message" : "Hello World",
  "sendTime" : 1525163446305,
  "intList" : null,
  "nodeName" : null
}
对象转为byte数组:[B@3327bd23
json字符串转为对象:XwjUser [id=1, message=Hello World, sendTime=Tue May 01 16:30:46 CST 2018, intList=null]
byte数组转为对象:XwjUser [id=1, message=Hello World, sendTime=Tue May 01 16:30:46 CST 2018, intList=null]

2、list集合与json字符串

String jsonStr = mapper.writeValueAsString(userList);
        System.out.println("集合转为字符串:" + jsonStr);
        
        List<XwjUser> userListDes = mapper.readValue(jsonStr, List.class);
        System.out.println("字符串转集合:" + userListDes);

运行结果:

集合转为字符串:[ {
  "id" : 1,
  "message" : "aaa",
  "sendTime" : 1525164096846,
  "intList" : null,
  "nodeName" : null
}, {
  "id" : 2,
  "message" : "bbb",
  "sendTime" : 1525164096846,
  "intList" : null,
  "nodeName" : null
}, {
  "id" : 3,
  "message" : "ccc",
  "sendTime" : 1525164096846,
  "intList" : null,
  "nodeName" : null
}, {
  "id" : 4,
  "message" : "ddd",
  "sendTime" : 1525164096846,
  "intList" : null,
  "nodeName" : null
} ]
字符串转集合:[{id=1, message=aaa, sendTime=1525164096846, intList=null, nodeName=null}, {id=2, message=bbb, sendTime=1525164096846, intList=null, nodeName=null}, {id=3, message=ccc, sendTime=1525164096846, intList=null, nodeName=null}, {id=4, message=ddd, sendTime=1525164096846, intList=null, nodeName=null}]

3、map与json字符串

String jsonStr = mapper.writeValueAsString(testMap);
            System.out.println("Map转为字符串:" + jsonStr);
            
                Map<String, Object> testMapDes = mapper.readValue(jsonStr, Map.class);
                System.out.println("字符串转Map:" + testMapDes);

运行结果:

Map转为字符串:{
  "date" : 1525164199804,
  "name" : "merry",
  "user" : {
    "id" : 1,
    "message" : "Hello World",
    "sendTime" : 1525164199805,
    "intList" : null,
    "nodeName" : null
  },
  "age" : 30
}
字符串转Map:{date=1525164199804, name=merry, user={id=1, message=Hello World, sendTime=1525164199805, intList=null, nodeName=null}, age=30}

4、修改转换时的日期格式:

// 修改时间格式
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        XwjUser user = new XwjUser(1, "Hello World", new Date());
        user.setIntList(Arrays.asList(1, 2, 3));

        String jsonStr = mapper.writeValueAsString(user);
        System.out.println("对象转为字符串:" + jsonStr);

运行结果:

对象转为字符串:{
  "id" : 1,
  "message" : "Hello World",
  "sendTime" : "2018-05-01 16:44:06",
  "intList" : [ 1, 2, 3 ],
  "nodeName" : null
}

参考:
ObjectMapper使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值