• api拆分(数据传递和接收的几种方式)


     

    传递方式一:对象转String

    接收:String类型接收再转对象

    传递方式二:Map

    接收:Map

     

    传递方式三:json(Map转json)

    接收:String转Map

     传递方式四:Map里放json对象

    反接收:json转String转Map

    接收:Map(this.getParamMap(request))接收,Map转对象

      传递方式五:(对象转json)直接传对象

    接收:String接收再转对象

     反接收几种形式:

    1.  对象

    2.  List<对象>

     

    3.  List<Map>

    4.  Map

    /**
         * JSON转对象
         * @param str
         * @param clazz
         * @return
         */
        public static <T> T fastJsonStringToEntity(String str, Class<T> clazz) {
            
            T object = com.alibaba.fastjson.JSON.parseObject(str, clazz);
            return object;
        }
    /**
         * JSON转list
         * @param str
         * @param clazz
         * @return
         */
        public static <T> List<T> fastJson2EntityList(String str, Class<T> clazz) {
            try{
                List<T> list = com.alibaba.fastjson.JSON.parseArray(str, clazz);
                return list;
            }catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    /**
         * JSON转List<Map>
         * @param jsonValue
         * @return
         */
        public static List<Map<String, Object>> fastJson2MapList(String jsonValue) {
            List<Map<String, Object>> list = new LinkedList<Map<String, Object>>();
            try{
                com.alibaba.fastjson.JSONArray array = com.alibaba.fastjson.JSON.parseArray(jsonValue);
                for(int i = 0; i < array.size(); i++) {
                    Map<String, Object> map = convert2MapObject(array.get(i).toString());
                    if(map != null) {
                        list.add(map);
                    }
                }
            }catch (Exception e) {
            }
            return list;
        }
    /**
         * JSON转Map
         * @param jsonValue
         * @return
         */
        public static Map<String, Object> convert2MapObject(String jsonValue) {
            try{
                Map<String, Object> map = JSON.parseObject(jsonValue, new TypeReference<HashMap<String, Object>>(){});
                return map;
            }catch (Exception e) {
                
            }
            
            return null;
        }
    /**
         * list转JSON
         * @param <T>
         * @param str
         * @param clazz
         * @return
         */
        public static <T> String fastList2Json(List<T> list) {
          //list转换为json
            try{
                String str= com.alibaba.fastjson.JSON.toJSON(list).toString();
                return str;
            }catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

    注意事项:

    1.注意API的返回值不要转换两次JSON,现在有些API的JSON被转换了两次;

    2.Get数据时,大部分条件改为普通的a=1&b=2的传参方式;
    特别是只需要一个参数的查询,如只需要orderID;

    没必要使用json的方式post查询参数。这样不容易测试,也不能简单通过浏览器查看。

    注意一个原则:一般情况的get数据,都用普通的a=1&b=2的传参,除非需要一些特别的list类型等等,再修改为json。
    3.API请求或者返回时不要传递混合参数,如一部分参数是json,一部分是普通参数,这样是不行的。
    附:json与String类型转换工具类

    package com.echemi.b2b.market.util;

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;

    import org.springframework.stereotype.Service;

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.TypeReference;
    import com.alibaba.fastjson.serializer.SerializeConfig;
    import com.alibaba.fastjson.serializer.SerializerFeature;

    /**
    * @desc json与String类型转换通用方法
    */
    @Service
    public class JsonConvertUtil {
    private static final String CACHE_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    /**
    * Json转换成String
    * @param jsonObj
    * @return
    */
    public static String jsonToString(JSONObject jsonObj) {

    return jsonObj.toString();
    }

    /**
    * Json中的特定字段转换成String
    * @param jsonObj
    * @return
    */
    public static String jsonToStringKey(JSONObject jsonObj, String key) {

    JSONObject jsonObject = JSONObject.fromObject(jsonObj);
    return jsonObject.get(key).toString();
    }
    /**
    * Json中的特定字段转换成String
    * @param jsonObj
    * @return
    */
    public static JSONObject jsonToJsonKey(JSONObject jsonObj, String key) {

    JSONObject jsonObject = JSONObject.fromObject(jsonObj);
    return (JSONObject) jsonObject.get(key);
    }
    /**
    * Json转换成Entity
    * @param jsonObj
    * @param clazz
    * @return
    */
    @SuppressWarnings({ "unchecked", "hiding" })
    public static <T> T jsonToEntity(JSONObject jsonObj, Class<T> clazz) {
    T entity = (T) JSONObject.toBean(jsonObj, clazz);
    return entity;
    }
    /**
    * Entity装换成Json
    * @return
    */
    public static JSONObject entityToJson(Object entity) {

    JSONObject jsonObj = JSONObject.fromObject(entity);
    return jsonObj;
    }

    /**
    * String转换成Json
    * @param str
    * @return
    */
    public static JSONObject stringToJson(String str) {

    JSONObject obj = JSONObject.fromObject(str);
    return obj;
    }

    /**
    * Json转换成Entity
    * @param clazz
    * @return
    */
    @SuppressWarnings({ "unchecked", "hiding" })
    public static <T> T stringToEntity(String str, Class<T> clazz) {

    JSONObject obj = JSONObject.fromObject(str);
    T entity = (T) JSONObject.toBean(obj, clazz);
    return entity;
    }
    /**
    * 数组转换成Json
    * @param object
    * @return
    */
    public static String array2json(Object object) {
    JSONArray jsonArray = JSONArray.fromObject(object);
    return jsonArray.toString();

    }
    /**
    * 时间格式化通用处理
    * @param jsonObject
    * @param description
    * @param obj
    */
    public static void jsonDateFormat(JSONObject jsonObject, String description, Object obj){
    JSONArray jsonArray = new JSONArray();
    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(Boolean.class, new JsonDateValueProcessor());
    jsonArray = JSONArray.fromObject(obj, jsonConfig);
    jsonObject.put(description, jsonArray);
    }
    public static JSONArray jsonDateFormat(Object obj){
    JSONArray jsonArray = new JSONArray();
    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(Boolean.class, new JsonDateValueProcessor());
    jsonArray = JSONArray.fromObject(obj, jsonConfig);
    return jsonArray;
    }


    /**
    * json string 转换为 map 对象
    * @param jsonObj
    * @return
    */
    public static Map<String, String> jsonToMap(Object jsonObj) {
    JSONObject jsonObject = JSONObject.fromObject(jsonObj);
    Map<String, String> map = (Map<String, String>)jsonObject;
    return map;
    }

    /**
    * 时间格式化通用处理
    * 作者:Daniel


    * @param obj
    */
    public static Map dateFormat( Object obj){

    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonDateValueProcessor());
    jsonConfig.registerJsonValueProcessor(Boolean.class, new JsonDateValueProcessor());
    JSONObject json = JSONObject.fromObject(obj, jsonConfig);

    return parserToMap(json.toString());
    }
    public static Map parserToMap(String s){
    Map map = new HashMap();
    JSONObject json=JSONObject.fromObject(s);
    Iterator keys=json.keys();
    while(keys.hasNext()){
    String key=(String) keys.next();
    String value=json.get(key).toString();
    if(value.startsWith("{")&&value.endsWith("}")){
    map.put(key, parserToMap(value));
    }else{
    map.put(key, value);
    }
    }
    return map;
    }

    /**
    * 将jsonArray转换成List
    * @param s
    * @return
    */
    public static List<Map<String, Object>> parserToList(JSONArray ja){
    if (ja == null) {
    return null;
    }
    List<Map<String, Object>> list2 = JSONArray.toList(ja, new HashMap<String, Object>(), new JsonConfig());//参数1为要转换的JSONArray数据,参数2为要转换的目标数据,即List盛装的数据
    //Person person = (Person) list2.get(0);
    //System.out.println(person.getAge());
    return list2;
    }

    /**
    * 统一JSON转换格式(FastJson)
    * @param object
    * @return
    */
    public static String toFastJsonString(Object object) {
    SerializeConfig config = new SerializeConfig();
    config.put(java.util.Date.class, new FastJsonDateFormatSerializer());
    config.put(java.sql.Date.class, new FastJsonDateFormatSerializer());
    config.put(java.sql.Timestamp.class, new FastJsonDateFormatSerializer());
    return com.alibaba.fastjson.JSON.toJSONString(object, config, SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue);
    }

    /**
    * 统一JSON转换格式(FastJson)
    * @param object
    * @return
    */
    public static com.alibaba.fastjson.JSONObject toFastJsonObject(Object object, boolean writeNullValue) {
    SerializeConfig config = new SerializeConfig();
    config.put(java.util.Date.class, new FastJsonDateFormatSerializer());
    config.put(java.sql.Date.class, new FastJsonDateFormatSerializer());
    config.put(java.sql.Timestamp.class, new FastJsonDateFormatSerializer());

    return (com.alibaba.fastjson.JSONObject)com.alibaba.fastjson.JSON.toJSON(object, config);
    }

    /**
    * JSON转对象
    * @param str
    * @param clazz
    * @return
    */
    public static <T> T fastJsonStringToEntity(String str, Class<T> clazz) {

    T object = com.alibaba.fastjson.JSON.parseObject(str, clazz);
    return object;
    }

    /**
    * JSON转list
    * @param str
    * @param clazz
    * @return
    */
    public static <T> List<T> fastJson2EntityList(String str, Class<T> clazz) {
    try{
    List<T> list = com.alibaba.fastjson.JSON.parseArray(str, clazz);
    return list;
    }catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * list转JSON
    * @param <T>
    * @param str
    * @param clazz
    * @return
    */
    public static <T> String fastList2Json(List<T> list) {
    //list转换为json
    try{
    String str= com.alibaba.fastjson.JSON.toJSON(list).toString();
    return str;
    }catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * 转换Map
    * @param jsonValue
    * @return
    */
    public static List<Map<String, Object>> fastJson2MapList(String jsonValue) {
    List<Map<String, Object>> list = new LinkedList<Map<String, Object>>();
    try{
    com.alibaba.fastjson.JSONArray array = com.alibaba.fastjson.JSON.parseArray(jsonValue);
    for(int i = 0; i < array.size(); i++) {
    Map<String, Object> map = convert2MapObject(array.get(i).toString());
    if(map != null) {
    list.add(map);
    }
    }
    }catch (Exception e) {
    }
    return list;
    }

    /**
    * JSON转Map
    * @param jsonValue
    * @return
    */
    public static Map<String, Object> convert2MapObject(String jsonValue) {
    try{
    Map<String, Object> map = JSON.parseObject(jsonValue, new TypeReference<HashMap<String, Object>>(){});
    return map;
    }catch (Exception e) {

    }

    return null;
    }
    }

  • 相关阅读:
    nyoj 139 我排第几个--康拓展开
    树形dp--hdu 3534 Tree
    hdu 2196 Computer 树形dp模板题
    poj 2342 Anniversary party 简单树形dp
    hdu 4738 Caocao's Bridges 图--桥的判断模板
    poj 1144 Network 图的割顶判断模板
    poj 3159 Candies 差分约束
    poj 3169 Layout 差分约束模板题
    codeforces C. Triangle
    java中过滤器、监听器、拦截器的区别
  • 原文地址:https://www.cnblogs.com/knightsu/p/7404031.html
Copyright © 2020-2023  润新知