Java中常用解析工具jackson及fastjson的使用


Posted in Java/Android onJune 28, 2021

一、maven安装jackson依赖

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

二、Jackson的使用

实体类转化JSON

把实体类转化为JSON格式数据,返回给前端 

创建 ObjectMapper obj = new ObjectMapper(); 对象,对象的 writeValueAsString 方法 会把一个实体类(必须有get、set方法)转化为JSON对象。

package com.lxc.springboot.controller;
 
 
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController // 这个类下边的所有方法,都会返回json,不会返回一个视图!
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        User user = new User("吕星辰", "888", 20);
        ObjectMapper obj = new ObjectMapper();
        String jsonObject = obj.writeValueAsString(user);
        return jsonObject;
    }
    // 为测试方便,在这里写一个实体类
    public static class User {
        private String userName;
 
        public String getUserName() {
            return userName;
        }
 
        public void setUserName(String userName) {
            this.userName = userName;
        }
 
        public String getPassword() {
            return password;
        }
 
        public void setPassword(String password) {
            this.password = password;
        }
 
        public int getAge() {
            return age;
        }
 
        public void setAge(int age) {
            this.age = age;
        }
 
        private String password;
        private int age;
        public User(String userName, String password, int age) {
            this.userName = userName;
            this.password = password;
            this.age = age;
        }
    }
}

测试:

Java中常用解析工具jackson及fastjson的使用

集合转化JSON

前端结果是:一个数组,里边是一个个对象

package com.lxc.springboot.controller;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.ArrayList;
import java.util.List;
 
@RestController
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        // 创建一个集合
        List<User> userList = new ArrayList<>();
        for(int i = 0; i < 3; i ++) {
            userList.add(new User("用户名"+i, "密码"+i, 20+i));
        }
        ObjectMapper obj = new ObjectMapper();
        String jsonObject = obj.writeValueAsString(userList);
        return jsonObject;
    }
    // 上边有实体类,这里省略
}

 测试:

Java中常用解析工具jackson及fastjson的使用

Map转化JSON

@RestController
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        // 创建一个Map
        Map<String, Object> map = new HashMap<>();
        map.put("name", "测试名");
        map.put("age", 20);
        ObjectMapper obj = new ObjectMapper();
        String jsonObject = obj.writeValueAsString(map);
        return jsonObject;
    }
}

前端结果是:对象

Java中常用解析工具jackson及fastjson的使用

new Date() 转化JSON

@RestController
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        Date date = new Date();
        ObjectMapper obj = new ObjectMapper();
        String jsonObject = obj.writeValueAsString(date);
        return jsonObject;
    }
}

前端结果是:时间戳

Java中常用解析工具jackson及fastjson的使用

当然,也可以自定义时间格式

@RestController
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String time = sdf.format(date); // "2021-06-27 05:19:33"
        ObjectMapper obj = new ObjectMapper();
        String jsonObject = obj.writeValueAsString(time);
        return jsonObject;
    }
}

封装

package com.lxc.springboot.utils;
 
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
 
import java.text.SimpleDateFormat;
 
public class JavaUtils {
    /**
     *  使用下边方法需要导入依赖包:
     * <dependency>
     *     <groupId>com.fasterxml.jackson.core</groupId>
     *     <artifactId>jackson-databind</artifactId>
     *     <version>2.12.3</version>
     * </dependency>
     *
     * @param object 集合(List)、Map(HashMap)、对象(new Date)
     * @param format 时间格式化  yyyy-MM-dd hh:mm:ss
     * @return JSON格式化的字符串
     */
    public static String getJson(Object object, String format) {
        ObjectMapper objectMapper = new ObjectMapper();
        // 不使用时间戳的方式
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        // 自定义时间格式
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        // 设置时间格式化
        objectMapper.setDateFormat(sdf);
        try {
            String jsonValue = objectMapper.writeValueAsString(object);
            return jsonValue;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String getJson(Object object) {
        return getJson(object, "yyyy-MM-dd hh:mm:ss");
    }
}

二、FastJson的使用

使用maven导入依赖包

<!--下边依赖跟aop没关系,只是项目中用到了 JSONObject,所以引入fastjson-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.70</version>
</dependency>

常用方法:

(1)JSON.toJSONString(obejct) - java对象转JSON字符串

(2)JSON.parseObject(string, User.class) - JSON字符串转java对象

使用

@RestController
public class Json {
 
    @RequestMapping(value = "/json")
    public String json() throws Exception{
        List<User> userList = new ArrayList<>();
        userList.add(new User("1", "1", 20));
        String res = JSON.toJSONString(userList);
        return res;
    }

Java中常用解析工具jackson及fastjson的使用

到此这篇关于Java中常用解析工具jackson及fastjson的使用的文章就介绍到这了,更多相关jackson和fastjson的使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
教你用Java Swing实现自助取款机系统
Jun 11 Java/Android
Java 将PPT幻灯片转为HTML文件的实现思路
Jun 11 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
Java tomcat手动配置servlet详解
Nov 27 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Mar 16 Java/Android
Java中的随机数Random
Mar 17 Java/Android
SpringCloud Feign请求头删除修改的操作代码
Mar 20 Java/Android
Java 超详细讲解IO操作字节流与字符流
Mar 25 Java/Android
Android基于Fresco实现圆角和圆形图片
Apr 01 Java/Android
Java数据结构之堆(优先队列)
May 20 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
Jun 21 Java/Android
httpclient调用远程接口的方法
Aug 14 Java/Android
Java中使用Filter过滤器的方法
Jun 28 #Java/Android
浅谈Python魔法方法
Java实现二维数组和稀疏数组之间的转换
深入理解java.lang.String类的不可变性
springboot拦截器无法注入redisTemplate的解决方法
Java中PriorityQueue实现最小堆和最大堆的用法
探讨Java中的深浅拷贝问题
You might like
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
python 堆和优先队列的使用详解
2019/03/05 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
Django接收自定义http header过程详解
2019/08/23 Python
python实现视频读取和转化图片
2019/12/10 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
如何卸载python插件
2020/07/08 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
.NET初级开发工程师面试题(包括Javascript)
2012/08/22 面试题
员工培训邀请函
2014/01/11 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
给老婆的保证书
2015/01/16 职场文书
员工辞职信怎么写
2015/02/27 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
如何利用python创作字符画
2022/06/25 Python
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技