日常开发中在进行接口对接的数据传输时,有一种场景是将bean转成jsonString,这里可以将bean转换成Map再转成jsonString。

工具类如下:

public static String toJSONString(Object obj) {
JSONObject json = new JSONObject();
try {
Map<String, String> map = beanToMap(obj);
for (Map.Entry<String, String> entry : map.entrySet()) {
json.put(entry.getKey(), entry.getValue());
}
} catch (JSONException e) {
e.printStackTrace();
}
return json.toString();
} /**
* 将bean转换成Map
*
* @param bean
* @return
*/
public static Map<String, String> beanToMap(Object bean) {
if (bean == null) {
return null;
} Map<String, String> parameters = new HashMap<String, String>(); if (null != parameters) {
// 取得bean所有public 方法
Method[] Methods = bean.getClass().getMethods();
for (Method method : Methods) {
if (method != null && method.getName().startsWith("get")
&& !method.getName().startsWith("getClass")) {
// 得到属性的类名
String value = "";
// 得到属性值
try {
String className = method.getReturnType()
.getSimpleName();
if (className.equalsIgnoreCase("int")) {
int val = 0;
try {
val = (Integer) method.invoke(bean);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
value = String.valueOf(val);
} else if (className.equalsIgnoreCase("String")) {
try {
value = (String) method.invoke(bean);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
if (value != null && value != "") {
// 添加参数
// 将方法名称转化为id,去除get,将方法首字母改为小写
String param = method.getName().replaceFirst("get",
"");
if (param.length() > 0) {
String first = String.valueOf(param.charAt(0))
.toLowerCase();
param = first + param.substring(1);
}
parameters.put(param, value);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
} return parameters;
}

将bean转换成键值列表的更多相关文章

  1. 把JSON转换成键值对

    public static Dictionary<string, string> JsonStringToKeyValuePairs(string jsonStr) { char json ...

  2. php将一个字符串转变成键值对数组的效率问题

    有这样一种需求,将形式为"TranAbbr=IPER|AcqSsn=000000073601|MercDtTm=20090615144037"的字符串转换成如下格式的数组: Arr ...

  3. SQL3120W 不能将xx的字段值转换成 INTEGER值

    一次用DB2 Load/Import导入数据时,报错,提示SQL3120W 不能将xx的字段值转换成 INTEGER值,但目标列不可为空.未装入该行. 目标表: CREATE TABLE TEST( ...

  4. C#中将字符串转换成Md5值的方法

    原文:C#中将字符串转换成Md5值的方法 版权声明:有问题可联系博主QQ:15577969,大家一起相互交流和学习. https://blog.csdn.net/qq15577969/article/ ...

  5. location将地址栏参数拆分成键值对的对象

    window.location可获取地址栏的一系列信息,并且每个浏览器都支持该属性,非常方便.而获取到的问号后面的参数可以进行加工转变成我们所想要的键值对. location的属性: 属性名 例子 说 ...

  6. 将bean转换成XML字符串

    package com.sinoservices.bms.bbl.rest.bean; import javax.xml.bind.annotation.XmlAccessType; import j ...

  7. List<bean> 转换成List<Map>

    //将listmap转换成list实体类 List<OaAttachment>list=new ArrayList<OaAttachment>(); if(Func.isNot ...

  8. C# 将json字符串进行排序 转成键值

    public static string StortJson(string json) { var dic = JsonConvert.DeserializeObject<SortedDicti ...

  9. Android 键盘键名和键值列表

     电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK ...

随机推荐

  1. highcharts的表名

    line:直线图 spline:曲线图 area:面积图 areaspline:曲线面积图 arearange:面积范围图 areasplinerange:曲线面积范围图 column:柱状图 col ...

  2. 安装rabbitmq

    安装配置epel源 $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 安装erlan ...

  3. 【转】Java读取matlab的.mat数据文件

    参考:Java读取mat文件 下载链接:ujmp  jmatio 下载完两个.jar文件之后,如何引用到java项目当中?项目名称->右键->Property->Java Build ...

  4. Koa2 的安装运行记录(一)

    1.参考koa+react(一) http://blog.suzper.com/2016/10/19/koa-react-%E4%B8%80/ 为了使用 KOA2 能够运行,必须能够使用ES7语法 a ...

  5. stl vector erase

     C++ Code  12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...

  6. 去掉UITableView多余的空白行分割线

    一.问题描述 在学习和开发中经常会遇到下面的问题,UITableView的UITableViewCell很少或者没有时,但UITableView有很多的空白行分割线.如下图: 如何去掉UITableV ...

  7. hive数据操作

    mdl是数据操作类的语言,包括向数据表加载文件,写查询结果等操作 hive有四种导入数据的方式 >从本地加载数据 LOAD DATA LOCAL INPATH './examples/files ...

  8. MySQL - 问题集 - 触发器更新本表数据异常"Can’t update table ‘tbl’ in stored function/trigger because it is already used by statement which invoked this"

    如果你在触发器里面对刚刚插入的数据进行了 insert/update, 则出现这个问题.因为会造成循环的调用. create trigger test before update on test fo ...

  9. 【ORACLE】常用脚本

    --IFELSE   DECLARE   V_NUM NUMBER; BEGIN   V_NUM := 100;   IF V_NUM > 100 THEN     --   ELSIF V_N ...

  10. react-native 之布局篇

    一.宽度单位和像素密度 react的宽度不支持百分比,设置宽度时不需要带单位,那么默认的单位是什么呢? /** * Sample React Native App * https://github.c ...