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 13 Java/Android
Java反应式框架Reactor中的Mono和Flux
Jul 25 Java/Android
logback 实现给变量指定默认值
Aug 30 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
Sep 15 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
详细介绍Java中的CyclicBarrier
Apr 13 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
Java 死锁解决方案
May 11 Java/Android
Spring中bean集合注入的方法详解
Jul 07 Java/Android
spring 项目实现限流方法示例
Jul 15 Java/Android
Java中使用Filter过滤器的方法
Jun 28 #Java/Android
浅谈Python魔法方法
Java实现二维数组和稀疏数组之间的转换
深入理解java.lang.String类的不可变性
springboot拦截器无法注入redisTemplate的解决方法
Java中PriorityQueue实现最小堆和最大堆的用法
探讨Java中的深浅拷贝问题
You might like
php 生成文字png图片的代码
2011/04/17 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
PHP中source #N问题的解决方法
2014/01/27 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
js跳转页面方法总结
2014/01/29 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python变量和字符串详解
2017/04/29 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
项目管理计划书
2014/01/09 职场文书
承诺书的格式范文
2014/03/28 职场文书
个人主要事迹材料
2014/08/26 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
海贼王十大潜力果实,路飞仅排第十,第一可毁世界(震震果实)
2022/03/18 日漫