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; }}
个人观点,有不足之处,请大家多批评改正
新人创作打卡挑战赛 发博客就能抽奖!定制产品红包拿不停!