IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> springMVC——JSON格式字符串输出示例代码简陋到优化及其乱码解决 -> 正文阅读

[开发工具]springMVC——JSON格式字符串输出示例代码简陋到优化及其乱码解决

一个JSON格式字符串输出案例实现的基础:
创建一个实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//需要导入lombok
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}

Cotronller 配备其相应注解实现

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

@Controller
public class controller {
    @RequestMapping("/json1")
    @ResponseBody//主要作用是将解析依赖所解析的字符串转换为json格式,注解的使用十分便利
    public String json1() throws JsonProcessingException {
        //既然导入了jackson json解析依赖 创建一个对象映射器 用来实现解析目的
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user = new User("鱿鱼片", 3, "男");
        //将我们的对象解析成为json格式,为什么使用String来定义一个字符串对象 因为json实质为一个字符串
        String str = mapper.writeValueAsString(user);
        //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便(注意)
        return str;
    }
}

maven依赖导入

   <dependency>
            <groupId>org.projectlombok</groupId><!--获取对象 注解依赖-->
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>

  <!--JSON解析工具依赖-->

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

运行之后出现乱码:
在这里插入图片描述解决途径:
发现出现了乱码问题,我们需要设置一下他的编码格式为utf-8,以及它返回的类型;

通过@RequestMaping的produces属性来实现(不同于之前所使用的方式 查看@RequestMapping的源码可知有很多属性),修改下代码:

//produces:指定响应体返回类型和编码
@RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")

代码优化 逐步偏向项目开发:
以上的解决方法是 在@RequestMapping中配置字符编码方式,但是一个controller里不止一个请求,可以通过spring配置统一解决.
添加一段消息StringHttpMessageConverter转换配置!

 <mvc:annotation-driven>
            <mvc:message-converters register-defaults="true">
                <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>

在上文,需要返回json字符串利用的是注解@ResponseBody
这也涉及到每一个请求也要配上注解@ResponseBody 略显麻烦,在类上直接使用 @RestController ,这样子,里面所有的方法都只会返回 json 字符串了,在前后端分离开发中,一般都使用 @RestController很便捷。当然每一个controller类是有不同的作用的这个,如果以下全是需要返回json字符串:

@RestController//改用RestController 以下就不用 @ResponseBody//主要作用是将解析依赖所解析的字符串转换为json格式,注解的使用十分便利
public class controller {
    @RequestMapping(value="/json1")//解决浏览器输出乱码问题-spring配置解决

    public String json1() throws JsonProcessingException {
        //既然导入了jackson json解析依赖 创建一个对象映射器 用来实现解析目的
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user = new User("鱿鱼片", 3, "男");
        //将我们的对象解析成为json格式,为什么使用String来定义一个字符串对象 因为json实质为一个字符串
        String str = mapper.writeValueAsString(user);
        //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便(注意)
        return str;
    }


}
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:36:29  更:2022-05-12 16:36:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:38:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码