springmvc中对象与字符串的相互转换

来源:互联网 发布:nginx https转发http 编辑:程序博客网 时间:2024/06/05 20:59
开发过程中前后端传值总会遇到json字符串与对象之间的转换,
总结以下几点,日后复习。

一: 先把开发过程中的坑排了

导入js文件

jquery-1.11.1.min.js

当web.xml中

<url-pattern>/</url-pattern>

是以”/”为spring接收格式时,

是 resultful 风格,默认不加载 css.js.img 的

需要手动在 springmvc 的配置文件中添加

<!-- location 表示工程路径  mapping 表示需要映射的目录,加载js,css,img --><mvc:resources location="/js/" mapping="/js/*"/>

二:两个注解

  • @RequestBody

    表示接收json字符串数据,再将json字符串转换成对象

  • @ResponseBody

    表示响应json对象数据,再将json对象转换成字符串

三:前端

js中定义一个对象,并用ajax与后台交互

$(function(){        var obj = {                id : 1,                name : "张三",                age : 10        };$.ajax({            url : "${pageContext.request.contextPath }/ajax",            contentType : "application/json;charset=utf-8",            data : JSON.stringify(obj),            type : "post",            dataType : "json",            success : function(data){                console.log(data.id);                console.log(data.name);            }        });

四:后台

@Controllerpublic class AjaxController {    @ResponseBody    @RequestMapping("/ajax")    public Map<String,Object> ajax(            @RequestBody Map<String,Object> param) {//      接收请求数据        System.out.println("ID : "+param.get("id"));        System.out.println("姓名 : "+param.get("name"));        System.out.println("年龄 : "+param.get("age"));//      响应请求数据        Map<String,Object> result = new HashMap<>();        result.put("id", "et_"+param.get("id"));        result.put("name", "et_"+param.get("name"));        return result;    }}

json字符串与对象的相互装换

package com.abc.common;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;public class JsonUtil {    private static ObjectMapper mapper = null;    private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    static{//      创建json对象        mapper = new ObjectMapper();//      json处理时间格式        mapper.setDateFormat(dateFormat);    }//  将对象转换为json字符串    public String toStr(Object object) {        String json = null;        try {            json = mapper.writeValueAsString(object);        } catch (Exception e) {            e.printStackTrace();        }        return json;    }//  将json字符串转换为对象    public <T> T toObject(String json,TypeReference<T> ref) {        T t = null;        try {            t = mapper.readValue(json, ref);        } catch (Exception e) {            e.printStackTrace();        }        return t;    }    public static void main(String[] args) {        JsonUtil ju = new JsonUtil();//      1.将字符串转换成对象        List<Map<String,Object>> list = new ArrayList<>();        Map<String,Object> map = new HashMap<>();        map.put("name", "张三");        map.put("age", 321);        map.put("date", new Date());        list.add(map);        System.out.println("我是list : "+list);        System.out.println("我是map : "+map);        String result = ju.toStr(map);        System.out.println("我是对象转换为json字符串 : "+result);//      2.将json转换成对象        String json = "[{\"name\":\"张三\",\"age\":321}]";        List<Map<String,Object>> reObj = ju.toObject(json, new TypeReference<List<Map<String,Object>>>(){});        System.out.println("我是json字符串转换为对象 : "+reObj);    }}

样例

我是list : [{date=Sat Nov 18 13:33:16 CST 2017, name=张三, age=321}]我是map : {date=Sat Nov 18 13:33:16 CST 2017, name=张三, age=321}我是对象转换为json字符串 : {"date":"2017-11-18 13:33:16","name":"张三","age":321}我是json字符串转换为对象 : [{name=张三, age=321}]