SpringMVC框架& JSON

  • JSON(javaScript Object Notation,js对象标记)是一种轻量级的数据交换格式,目前使用比较广泛。

  • 采用完全独立于编程语言的文本形式来储存和只展示数据,对于java来说,就是一个字符串的形式。

  • 简介清晰的层次结构使得JSON成为理想的数据交换语言。

  • 易于机器解析和生成,也易于人的解读和编写,并且格式小,可以有效的提高网络传输效率。

在javaScript语言中,一切都是对象。因此,任何javaScript支持的类型都是可以通过JSON来表示,例如字符串、数字、对象、数组等。

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

  <script type="text/javascript">
  //编写一个javaScript对象 ES6
  var user = {
    name: "郭六六",
    age: 3,
    sex: "男"
  };

  //将js对象转化为json对象
  var json = JSON.stringify(user);
  //输出json对象
  console.log(json);
  //输出js对象
  console.log(user);
  </script>
</head>
<body>

</body>
</html>

 

 

根据在控制台上输出的结果,可以看出json对象时一个字符串类型的,而js输出的就是一个对象。

我们可以在代码中实现js到json对象的转化,那么同样也可以实现json到js对象的转化。

//将js对象转化为json对象
var json = JSON.stringify(user);
//输出json对象
console.log(json);

//加一条分割线
console.log("============================")

//将json对象转化为js对象
var js = JSON.parse(json);
console.log(js);

 

 

 前端就可以根据这样的操作将json和javaScript之间相互转换,从后端转入一个json字符串,那么前端就可以将json字符串转化为javaScript对象。

Jackson使用

Jackson为JSON解析工具,我们要使用它,首先导入jackson的pom依赖(maven项目),在springMVC配置文件中配置解决JSON在前端输出乱码的问题,其他操作就按照正常使用SpringMVC操作即可。

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.14.2</version>
    </dependency>
<!-- 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>

我们可以创建一个实体类User。

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}

在controller层验证Jackson的使用。

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


@Controller
//@RestController与 @ResponseBody注解的用处相同,两者使用其中一个即可,但要注意,一个放在类上,一个放在方法上。
public class UserController {
    @RequestMapping("/t1")
    @ResponseBody//这个注解表示该方法不会走视图解析器
    public String json1() throws JsonProcessingException {
        //jackson包中有个对象较ObjectMapper,通过这个字符串可以生成一个字符串
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象并封装数据
        User user = new User("郭六六",23,"男");

        String str = mapper.writeValueAsString(user);


        return str;
    }
}

 

结果可以看到是一个字符串类型的·,所以User对象被转化为一个字符串并输出,但是一个javaScript对象。

接下来测试一个集合的输出

 @RequestMapping("/t2")
    public String test2() throws JsonProcessingException {
        //jackson包中有个对象较ObjectMapper,通过这个字符串可以生成一个字符串
        ObjectMapper mapper = new ObjectMapper();
        //创建一个User类型的List集合
        List<User> userList = new ArrayList<User>();
        //创建一个对象并封装数据
        User user = new User("郭六六",23,"男");
        User user1 = new User("郭七七",24,"男");
        User user2 = new User("郭八八",25,"男");
        User user3 = new User("郭九九",26,"男");
        User user4 = new User("郭十十",27,"男");

        userList.add(user);
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);


        String str = mapper.writeValueAsString(userList);
        return str;


    }

 "[]"代表它是一个集合,而"{}"则代表它时一个具体的对象。

FastJson

FastJson.jar是阿里开发的一款专门用于java开发的包,可以方便的实现json对象与javaBean对象的转换,实现javaBean对象json字符串的转换,实现json对象与json字符串的转换。实现json的转换方法很多,最后的实现结果都是一样的。

导入FastJson的pom依赖

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.60</version>
    </dependency>
@RequestMapping("/t4")
public String test4(){
    //创建一个User类型的List集合
    List<User> userList = new ArrayList<User>();
    //创建一个对象并封装数据
    User user = new User("郭六六",23,"男");
    User user1 = new User("郭七七",24,"男");
    User user2 = new User("郭八八",25,"男");
    User user3 = new User("郭九九",26,"男");
    User user4 = new User("郭十十",27,"男");

    userList.add(user);
    userList.add(user1);
    userList.add(user2);
    userList.add(user3);
    userList.add(user4);

    String str = JSON.toJSONString(userList);
    return str;
}

使用FastJson与Jackson的方式输出结果相同,在开发过程中,要根据项目需求来选择哪种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值