> 文档中心 > 04SpringMVC--JSON使用

04SpringMVC--JSON使用

目录

JSON的要求和语法格式:

JSON字符串转化为JS对象,使用JSON.parse()方法

JS字符串转化为JSON对象,使用JSON.stringify()方法

 JSON 返回字符串

JSON处理时间Date

封装成工具类


JSON的要求和语法格式:

  • 对象表示为键值对
  • 数据由逗号分割,最后一组数据没有逗号
  • 花括号{}保存对象
  • 方括号[]保存数组
{"name":"秦江","age":3,"sex":"男"}

JSON键值对是用来保存JS对象的一种方式,和JS对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 ""包裹,使用冒号;分割。然后紧接着值:

   {"name":"秦江"}   {"age":3}   {"sex":"男"}

JSON和JS对象相互转换

JSON字符串转化为JS对象,使用JSON.parse()方法

var obj = JSON.parse('{"a":"hello","b":"Word"}'); //结果为 {a:'Hello',b:'Word'}

JS字符串转化为JSON对象,使用JSON.stringify()方法

var obj = JSON.stringify(a:'Hello',b:'Word'); //结果为 '{"a":"hello","b":,"Word"}'

 JSON 返回字符串

1、引入jar包

          com.fasterxml.jackson.core      jackson-databind      2.13.0    

2、使用@ResponseBody

        使用位置在方法的上面

@ResponseBody,将服务器端返回的对象转换为对json对象响应回去;

3、需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为json字符串;

 ObjectMapper mapper = new ObjectMapper();

案例:

    @RequestMapping(value = "/json1")    @ResponseBody    public String json1() throws JsonProcessingException {  ObjectMapper mapper = new ObjectMapper(); User user = new User("秦疆1号", 1, "男"); // 将Java对象转换为json字符串; String str = mapper.writeValueAsString(user); return str;    }

发现问题:

        会有乱码问题

解决方案:

1、通过@RequestMaping的produces属性来实现

@RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")

2、xml中配置

                                                   

JSON处理时间Date

 //1.如何让他不返回时间戳!所以我们要关闭他的时间功能 mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false); //2.时间格式化问题!自定义时间格式对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //3.让mapper指定时间日期格式为 mapper.setDateFormat(sdf);

案例:

    @RequestMapping(value = "/time2")    @ResponseBody    public String time2() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); //1.如何让他不返回时间戳!所以我们要关闭他的时间功能 mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false); //2.时间格式化问题!自定义时间格式对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //3.让mapper指定时间日期格式为 mapper.setDateFormat(sdf); //写一个日期时间的类 Date date = new Date(); return mapper.writeValueAsString(date);    }

封装成工具类

public class JsonUtils {    /**     * 默认时间格式 yyyy-MM-dd HH:mm:ss     * @param object     * @return     */    public static String getJson(Object object){ return getJson(object, "yyyy-MM-dd HH:mm:ss");    }    /**     * 自己定义时间格式     * @param object     * @param dateFormat     * @return     */    public static String getJson(Object object,String dateFormat){ ObjectMapper mapper = new ObjectMapper(); //1.如何让他不返回时间戳!所以我们要关闭他的时间功能 mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false); //2.时间格式化问题!自定义时间格式对象 SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); //3.让mapper指定时间日期格式为 mapper.setDateFormat(sdf); try {     return mapper.writeValueAsString(object); } catch (JsonProcessingException e) {     e.printStackTrace(); } return null;    }}

个人观点,有不足之处,请大家多批评改正

04SpringMVC--JSON使用 新人创作打卡挑战赛 04SpringMVC--JSON使用 发博客就能抽奖!定制产品红包拿不停!