实体模型类:
public class model {
private String Name1;
private String Name2;
private String Name3;
public model() {
super();
}
public model(String name1, String name2, String name3) {
super();
Name1 = name1;
Name2 = name2;
Name3 = name3;
}
@Override
public String toString() {
return "model [Name1=" + Name1 + ", Name2=" + Name2 + ", Name3="
+ Name3 + "]";
}
public String getName1() {
return Name1;
}
public void setName1(String name1) {
Name1 = name1;
}
public String getName2() {
return Name2;
}
public void setName2(String name2) {
Name2 = name2;
}
public String getName3() {
return Name3;
}
public void setName3(String name3) {
Name3 = name3;
}
}
实体类转map:
public class Map_ModelUtil {
/** 实体类转化成Map
* @param classModel
* @return
*/
public static Map ClassToMap( Object classModel) {
Object temp = classModel;
Map<Object,Object> map = new HashMap<Object, Object>();
Class<?> clz = temp.getClass();
Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
map.put(field.getName(), field.get(temp));//键值对为 属性名:属性值
} catch (Exception e) {
System.out.println("转换异常:" + e.getMessage());
}
}
return map;
}
}
测试:
public static void main(String[] args) {
model test = new model("value1","value2","value3");
System.out.println(Map_ModelUtil.ClassToMap(test));
}
结果:
{Name3=value3, Name2=value2, Name1=value1}
Map转实体类:
public class Map_ModelUtil {
/** map转化成实体类
* @param map
* @param classModel
* @return
*/
public static Object MapToClassp( Map map , Object classModel) {
Map<Object,Object> tempMap = map;
Object tempClass = classModel;
Class<?> clz = tempClass.getClass();
Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
if (tempMap.containsKey(field.getName())) { //如果map集合存在与属性名相同的键
field.set(tempClass, tempMap.get(field.getName())); //把属性值赋予给目标类对应属性
}
} catch (Exception e) {
System.out.println("转换异常:" + e.getMessage());
}
}
return tempClass;
}
}
测试:
public static void main(String[] args) {
Map<String,String> test = new HashMap<String, String>();
test.put("Name1", "value1");
test.put("Name2", "value2");
test.put("Name3", "value3");
System.out.println(Map_ModelUtil.MapToClassp(test, new model()).toString());
}
结果:
model [Name1=value1, Name2=value2, Name3=value3]
Map转JSON:
/** map转化成Json数据
* @param map
* @param classModel
* @return
*/
public static JSONObject mapToJson( Map map ) {
Set<Entry<Object, Object>> dataEntrys = map.entrySet();
JSONObject jsonObject = new JSONObject();
for (Entry<Object, Object> data : dataEntrys) {
System.out.println("key:" + data.getKey() + " --- value:" + data.getValue());
jsonObject.put((String) data.getKey(), data.getValue());
}
return jsonObject;
}
测试:
public static void main(String[] args) {
Map<String, String> datas = new HashMap<String, String>();
datas.put("key1", "value1");
datas.put("key2", "value2");
datas.put("key3", "value3");
JSONObject result = mapToJson(datas );
System.out.println(result);
}
结果:
key:key1 --- value:value1
key:key2 --- value:value2
key:key3 --- value:value3
{"key1":"value1","key2":"value2","key3":"value3"}
JSON转Map:
/** Json转化成map数据
* @param map
* @param classModel
* @return
*/
public static Map jsonToMap( String jsonString ) {
Map<Object, Object> result = new HashMap<Object, Object>();
JSONObject json = JSON.parseObject(jsonString);
Set<String> setList = json.keySet();
for (String data : setList) {
System.out.println("key:" + data + " --- value:" + json.get(data));
result.put(data, json.get(data));
}
return result;
}
测试:
public static void main(String[] args) {
Map mapMsg = jsonToMap("{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}");
System.out.println("mapMsg:" + mapMsg);
}
结果:
key:key1 --- value:value1
key:key2 --- value:value2
key:key3 --- value:value3
mapMsg:{key1=value1, key2=value2, key3=value3}
JSON转实体类:
/** Json转化成model数据
* @param map
* @param classModel
* @return
*/
public static Object jsonToModel( String jsonString , Object classA ) {
try{
JSONObject json = JSON.parseObject(jsonString);
Set<String> setList = json.keySet();
for (String data : setList) {
System.out.println("key:" + data + " --- value:" + json.get(data));
Field value = classA.getClass().getDeclaredField(data);//在目标类中查看是否有相同名称的属性
value.setAccessible(true);
value.set(classA, json.get(data)); //把属性值赋予给目标类对应属性
}
return classA;
}catch (Exception e) {
System.out.println("转化异常!");
return null;
}
}
测试:
public static void main(String[] args) {
model model = (model) jsonToModel("{\"Name1\":\"value1\",\"Name2\":\"value2\",\"Name3\":\"value3\"}" , new model() );
System.out.println(model.toString());
//JSON也有自带的转化方法
model model2 = JSON.parseObject("{\"Name1\":\"value1\",\"Name2\":\"value2\",\"Name3\":\"value3\"}" , model.getClass() );
System.out.println("model2:" + model.toString());
}
结果:
key:Name3 --- value:value3
key:Name1 --- value:value1
key:Name2 --- value:value2
model [Name1=value1, Name2=value2, Name3=value3]
model2:model [Name1=value1, Name2=value2, Name3=value3]
实体类转JSON:
这里不写了,这个用 JSON 自带的方法 JSON.toJSONString(model2); 就可以了,返回的就是 json 的字符串;
在系统的开发中,有时候我们需要把实体类的每一个属性名和值都拿出来,如果靠传统的get方法和手写的属性名,效率低而且复用性差,尤其是当出现一个模型有几十上百个属性字段时,一个一个写简直浪费时间,用这个转化,把实体类的属性名和属性值直接转化成键值对,方便遍历。