Jackson使用

news2024/11/28 0:43:25

导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringMVC</artifactId>
        <groupId>com.kuang</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springmvc-06-JSON</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.0</version>
        </dependency>
    </dependencies>

</project>

 

controller

package com.qf.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.qf.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {
      @RequestMapping("/j1")
    @ResponseBody//不会走视图解析器,将返回值,直接打印在客户端发起请求的页面
    public String json1() throws JsonProcessingException {
          //jackson,  ObjectMapper
          ObjectMapper mapper = new ObjectMapper();
          User user = new User(3, "基基", 19);
          String s = mapper.writeValueAsString(user);
          return s;

      }

}

文本默认使用“text/plain;charset=ISO-8859-1”作为ContentType,导致中文乱码

  @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
<!--    JSON乱码问题-->
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg value="UTF-8"/>
                </bean>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="objectMapper">
                        <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                            <property name="failOnEmptyBeans" value="false"/>
                        </bean>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

 

 

 

package com.qf.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.qf.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

//@Controller//会调用视图解析器,用来转发和重定向的,视图解析器默认是转发,加上 redirect:/
@RestController//不会走视图解析器,这类下的所有方法返回的都是响应给请求页面的字符串。
public class UserController {
      @RequestMapping(value = "/j1")
  //  @ResponseBody//不会走视图解析器,将返回值,直接打印在客户端发起请求的页面
    public String json1() throws JsonProcessingException {
          //jackson,  ObjectMapper
          ObjectMapper mapper = new ObjectMapper();
          User user = new User(3, "基基", 19);
          String s = mapper.writeValueAsString(user);
          return s;
      }
    @RequestMapping(value = "/j2")
    //  @ResponseBody//不会走视图解析器,将返回值,直接打印在客户端发起请求的页面
    public String json2() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        User user1 = new User(1, "基基1", 19);
        User user2 = new User(2, "基基2", 19);
        User user3 = new User(3, "基基3", 19);
        User user4 = new User(4, "基基4", 19);
        List<User> users=new ArrayList<>();
        users.add(user1);
        users.add(user2);
        users.add(user3);
        users.add(user4);
        String s = mapper.writeValueAsString(users);
        return s;
    }

    @RequestMapping(value = "/j3")
    //  @ResponseBody//不会走视图解析器,将返回值,直接打印在客户端发起请求的页面
    public String json3() throws JsonProcessingException {
        Date date = new Date();
        //ObjectMapper 时间解析过后的默认格式的为时间戳:Timestap;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(date);
        return new ObjectMapper().writeValueAsString(format);
    }

    @RequestMapping(value = "/j4")
    //  @ResponseBody//不会走视图解析器,将返回值,直接打印在客户端发起请求的页面
    public String json4() throws JsonProcessingException {
      //将数据转化为JSON格式
        ObjectMapper mapper = new ObjectMapper();
        //不使用时间戳的方式
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);

        //ObjectMapper 时间解析过后的默认格式的为时间戳:Timestap;
        //自定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       mapper.setDateFormat(sdf);
        Date date = new Date();
        String string = mapper.writeValueAsString(date);
        return string;
    }

}

封装的工具类 

package com.qf.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 JsonUtils {


    public static String getJson(Object o){
        return getJson(o,"yyyy-MM-dd HH-mm-ss");
    }

    public static String getJson(Object o,String dateFormat){
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        mapper.setDateFormat(sdf);
        try {
            return mapper.writeValueAsString(o);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

        return null;
    }

}

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/759596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

静态输出调节

1.理论部分 15. SISO反馈控制器设计 (6)&#xff1a;输出调节-静态反馈 Output Regulation - 知乎 (zhihu.com) 上述博客已经写的很好了&#xff0c;过多描述 2.仿真实验 3.参考理论 首先通过18式求解出X和U&#xff0c;然后设计一个让原系统初始稳定的控制律Kx&#xff0c;…

第二周习题

2.创建类MyDate,year属性和month属性,编写一个方法totalDays,该方法通过年份和月份判断该月一共有多少天,在主函数中接受用户输入年和月&#xff0c;调用该方法测试它. 这里考虑平年和闰年 “平年2月有28天。闰年的2月有29天 那么就有区别了 只要判断这一点就行了&#xff01;&…

框架开发使用注解处理器APT优雅提效

目录 概述1.什么是注解处理器APT2.应用场景3.如何使用3.1 创建注解API模块3.2 创建注解处理器模块3.3 使用注解 概述 在现在的很多开源框架中&#xff0c;我们经常能在源码中看到注解处理器的影子&#xff0c;比如我们熟悉的阿里的ARouter,Android开发中的替代findViewById神器…

【git】git以及可视化界面下载安装

git 以及可视化界面下载安装 git下载安装测试功能 sourceTree下载安装 git 下载安装 下载地址 git官网上有多个版本&#xff0c;点击“Click here to download” &#xff0c;下载下来之后&#xff0c;一直下一步安装即可 测试功能 在任意文件夹中右击&#xff0c;看到图中…

Linux三剑客

前言 关于bash&#xff1a; bash&#xff1a;命令处理器&#xff0c;运行在文本窗口&#xff0c;能够执行用户输入的命令。 脚本&#xff1a;从linux文件中读取命令&#xff0c;被称为脚本。 1 命令&#xff1a;alias&#xff1a;起别名 2 快捷键操作&#xff1a; ctrla&#…

浅谈如何提高自动化测试的稳定性和可维护性

目录 前言&#xff1a; 装饰器与出错重试机制 什么是装饰器&#xff1f; 编写一个出错重试装饰器 pytest 里的出错重试机制实现 Allure 里的测试用例分层 为什么要采用分层机制&#xff1f; allure 的装饰器step 前言&#xff1a; 自动化测试在软件开发中扮演着重要的…

Fortran lapack求数组的特征值,特征向量

call zgeev(V, V, n, arr, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info) 这个函数是求矩阵的特征值&#xff0c;且结果是双精度复数的情况&#xff0c;具体可以查MKL的官方文档。 如果是单精度复数就要用cgeev&#xff0c;其中的参数也是将双精度改为单精度即可。…

Hive,FineBI-30W聊天数据分析及可视化-B站黑马学习记录

2023B站黑马Hadoop、Hive、云平台实战项目 目录 1. 清洗数据 2. 计算各指标&#xff0c;并创建表存储结果 3.FineBI连接Hive数据库&#xff0c;将指标结果可视化 1. 清洗数据 1&#xff09;部分数据缺失地理位置信息&#xff08;sender_gps&#xff09;&#xff0c;需要剔…

Linux下的调试器——gdb使用指南

文章目录 一.序二.安装gdb调试器三.进入调试四.调试相关指令 前言&#xff1b; 在VS环境下&#xff0c;我们不仅可以写代码、编译、运行可执行程序&#xff0c;还可以对生成的可执行程序进行调试。本章我们就来学习如何在Linux环境下进行调试。 一.序 要进行调试&#xff0c;首…

EPICS一个示例数据库实例详解

以下是一个示例数据库图表&#xff1a; 以上记录的数据库文件如下&#xff1a; record(ao, "$(P):SET") {field(FLNK, "$(P):ACTIVATE")field(VAL, "2")field(OUT, "$(P):RUN")field(DRVH, "40")field(DRVL, "5"…

摩尔投票算法(Moore‘s Voting Algorithm)及例题

摩尔投票算法&#xff08;Moores Voting Algorithm&#xff09;及例题 摩尔投票算法简介摩尔投票算法算法思想摩尔投票算法经典题目169. 多数元素229. 多数元素 II6927. 合法分割的最小下标 上午打力扣第 354 场周赛最后十五分钟用摩尔投票算法顺利 AC 第三题&#xff0c;以前没…

ViewRootImpl简析

ViewRootImpl简析 如何实现视图和wms沟通桥梁的作用Session的创建获取画布如何实现事件分发的桥梁作用 The top of a view hierarchy, implementing the needed protocol between View and the WindowManager. This is for the most part an internal implementation detail of…

快速搭建Python(Django)+Vue环境并实现页面登录注册功能

文章目录 一. 创建vue项目及环境搭建1. 创建vue项目2. 配置axios3. 创建vue组件login和register4. 设置并引用路由vue-router5. 完成login&#xff0c;register组件代码6. 完成App.vue的代码 二. 创建django项目及环境搭建1. 创建django项目2.配置mysql数据库3. 创建应用app4.创…

学习babylon.js --- [4] 体验WebVR

本文基于babylonjs来创建一个简单的WebVR工程&#xff0c;来体验一下babylonjs带来的VR效果&#xff0c;由于没有VR头显&#xff0c;所以只能使用Win10自带的混合现实模拟器&#xff0c;开启模拟器请参考这篇文章 一 简单工程 本文基于第三篇文章中的工程进行修改&#xff0c;…

Deep Residual Learning for Image Recognition

2015-ResNet 关键词: residual connection CV论文:一般在第一页就放一个很“好看”的图 从图可以得到的结论:深的网络更难训练 ( 不仅因为过拟合,因为训练时误差都很难降低 ) 网络结构图 1*1卷积作用:改变通道数 ,提出维度匹配方法:1)补零;2)投影projection…

map和set的模拟实现|利用红黑树封装map和set|STL源码剖析

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量干货博客汇总https://blog.csdn.net/yu_cblog/c…

再战Nvidia,安装 Windows 11 和 EndeavourOS 双系统

吐血刚装了一周的Ubuntu23.04就挂了&#xff0c;由于买的是最新的显卡就上了Test版本&#xff0c;结果Ubuntu自带的nvidia驱动535居然会失灵&#xff0c;nvidia-smi直接fail。于是换了一堆发行版本&#xff0c;但是我这个主板没带hdmi不支持集显输出&#xff0c;必须安装时就上…

WEB:warmup

背景知识 文件包含 目录遍历 代码审计 题目 打开链接后只有一张图片 f12和查看源代码都试一下&#xff0c;查看源代码发现如下图 访问一下source.php&#xff0c;有如下代码&#xff0c;进行代码审计 <?phphighlight_file(__FILE__);class emmm{public static function c…

#pragma pack不成对出现造成的异常

#pragma pack需要成对出现&#xff0c;若不成对出现会造成异常&#xff0c;难以调查。 现有5个文件&#xff0c;分别是main.c&#xff0c;A.h&#xff0c;A.c&#xff0c;B.h&#xff0c;B.c。 A.h文件内容如下&#xff1a; #include <stdio.h> #include <stdlib.h&g…

ylb-接口14购买理财产品

总览&#xff1a; 在api模块service包&#xff0c;Invest类下添加&#xff08;投资理财产品&#xff0c; int 是投资的结果 &#xff0c; 1 投资成功&#xff09;&#xff1a; package com.bjpowernode.api.service;import com.bjpowernode.api.pojo.BidInfoProduct;import j…