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;
}
}
api拆分(数据传递和接收的几种方式)的更多相关文章
- 【转载】C#批量插入数据到Sqlserver中的三种方式
引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...
- C#中POST数据和接收的几种方式(抛砖引玉)
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- [转]C#中POST数据和接收的几种方式
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- C#中POST数据和接收的几种方式
POST方式提交数据,一种众所周知的方式: html页面中使用form表单提交,接收方式,使用Request.Form[""]或Request.QueryString[" ...
- android 应用程序Activity之间数据传递与共享的几种途径
一.基于消息的通信机制 Intent ---boudle ,extraAndroid为了屏蔽进程的概念,利用不同的组件[Activity.Service]来表示进程之间的通信!组件间通信的核心机制是I ...
- Ajax上传数据和上传文件(三种方式)
Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...
- 【前台 ajax】web项目前台传递数组给后台 两种方式
项目使用maven springMVC 有需求 将前台的数组 在ajax中 送给后台 方式1: 前台代码:[注意:ajax中的属性---traditional:true, ] 如果Post ...
- 传递引用类型参数的两种方式(转自 MSDN)
引用类型的变量不直接包含其数据:它包含的是对其数据的引用.当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值(更改属性的值),但是无法更改引用本身的值:也就是说,不能使用相同的引 ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
随机推荐
- C#获取图片扩展名
代码: private string GetImageExtension(MemoryStream ms) { try { Image image = Image.FromStream(ms); if ...
- RabbitMq初探——用队列实现RPC
rabbitmq构造rpc 前言 rpc——remote procedure call 远程调用.在我接触的使用过http协议.thrift框架来实现远程调用.其实消息队列rabbitmq也可以实现. ...
- 【OCP-12c】CUUG 071题库考试原题及答案解析(20)
20.choose two Examine the description of the EMP_DETAILS table given below: Which two statements are ...
- IT项目中使用 json格式数据 保存项目配置信息, 在配置文件再读取json文件的内容进行赋值
json格式小巧玲珑,适合做配置文件,特别是大型项目中, 可以将配置信息分类保存到不同的json文件中, 然后再在配置文件中读取配置文件的数据进行赋值, 这里以python为例进行说明: 假设在you ...
- Nodejs Express模块server.address().address为::
来自 http://blog.csdn.net/medivhq/article/details/74171939 我按照菜鸟教程上的写法为:(http://www.runoob.com/nodejs/ ...
- 在IDEA中 SFTP 进行发布操作
1, 2, 3, 4, 成功了 补充:] 也可以使用手动写配置文件的方式来的
- C#-WebForm-GridView表格展示数据
GrideView 控件,功能是将数据库的数据用表格的形式展示在页面上 一.<源>代码中放入 GridView 控件 打开<设计>界面 二.绑定数据源 (一)创建 LinQ 类 ...
- rdlc报表函数
字符串函数 使用串联运算符和 Visual Basic 常量可将多个字段组合在一起.以下表达式返回两个字段,它们分别位于同一文本框的不同行中: 复制代码 =Fields!FirstName. ...
- flask _bootstrap中使用flash
在模板中获取flash闪现的那段代码要和内容块放在同一级别上.不然网页上是看不到闪现的内容的. 比如在基模板里定义一个content block ,里面一个是get_flashed_messages代 ...
- Github使用笔记
========================Github使用===================概念解释:远程仓库Remote:就是指保存在github网站里的代码;本地仓库Repository ...