java-Map和实体模型类和json的相互转化(运用反射)

实体模型类:

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方法和手写的属性名,效率低而且复用性差,尤其是当出现一个模型有几十上百个属性字段时,一个一个写简直浪费时间,用这个转化,把实体类的属性名和属性值直接转化成键值对,方便遍历。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值