前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >SpringMVC系列知识:(七)json的相关知识,java 返回json对象(小白必看)

SpringMVC系列知识:(七)json的相关知识,java 返回json对象(小白必看)

作者头像
一写代码就开心
发布2020-11-19 15:33:55
发布2020-11-19 15:33:55
55600
代码可运行
举报
文章被收录于专栏:java和pythonjava和python
运行总次数:0
代码可运行

很多人搞不清楚 JSON 和 JavaScript 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:

JSON 是 JavaScript 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

代码语言:javascript
代码运行次数:0
复制
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

JSON 和 JavaScript 对象互转

要实现从JSON字符串转换为JavaScript 对象,使用 JSON.parse() 方法:

代码语言:javascript
代码运行次数:0
复制
var obj = JSON.parse('{"a": "Hello", "b": "World"}');
//结果是 {a: 'Hello', b: 'World'}
要实现从JavaScript 对象转换为JSON字符串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'});
//结果是 '{"a": "Hello", "b": "World"}'

java 返回json对象

Jackson应该是目前比较好的json解析工具了 要使用这个Jackson,我们就需要导入依赖 自己创建一个项目,导入Jackson的依赖

代码语言:javascript
代码运行次数:0
复制
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.8</version>
    </dependency>
</dependencies>

实体类

代码语言:javascript
代码运行次数:0
复制
//需要导入lombok
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private String name;
    private int age;
    private String sex;

}

controller层

代码语言:javascript
代码运行次数:0
复制
@Controller
public class UserController {

   @RequestMapping("/json1")
   @ResponseBody
   public String json1() throws JsonProcessingException {
       //创建一个jackson的对象映射器,用来解析数据
       ObjectMapper mapper = new ObjectMapper();
       //创建一个对象
       User user = new User("大豆", 3, "男");
       //将我们的对象解析成为json格式
       String str = mapper.writeValueAsString(user);
       //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
       return str;
  }

}

以上的返回会出现乱码

通过@RequestMaping的produces属性来实现,修改下代码

//produces:指定响应体返回类型和编码 @RequestMapping(value = “/json1”,produces = “application/json;charset=utf-8”) 再次测试, http://localhost:8080/json1 , 乱码问题OK!

但是这样写太麻烦,我们可以在springmvc.xml里面配置,统一解决 使用了Jackson的时候,就使用这个配置,就可以解决

代码语言:javascript
代码运行次数:0
复制
<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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java 返回json对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档