//json 实体互转, list json互转 ,List<实体> 转List<Object> , List<Objcet> 转List<Map>

package mission;

//json 实体互转, list json互转 ,List<实体> 转List<Object> , List<Objcet> 转List<Map>          使用alibaba的json工具包

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * Created by chengda on 2017/2/23.
 */
public class JsonTest {

	public static void main(String[] args) {
		List<Brand> brandList = new ArrayList<Brand>();
		Brand b = new Brand();
		b.setId(1);
		b.setName("测试");
		b.setStatus(false);
		Brand b1 = new Brand();
		b1.setId(2);
		b1.setName("测试2");
		b1.setStatus(false);
		Brand b2 = new Brand();
		b2.setId(3);
		b2.setName("测试3");
		b2.setStatus(false);

		brandList.add(b1);
		brandList.add(b2);
		brandList.add(b);

		/**
		 * 实体转为json String 字符串
		 */
		String s = JSONObject.toJSONString(b);
		System.out.println(s);

		/**
		 * json String 字符串 转为 JSONObject 
		 */
		JSONObject ss = JSONObject.parseObject(s);
		System.out.println(ss.getBooleanValue("status"));

		/**
		 * JSONObject  转为  String 
		 * String 转为 Map 
		 */
		String sss = JSON.toJSONString(ss);
		Map maps = JSONObject.parseObject(sss, Map.class);
		for(Object object : maps.keySet()) {
			System.out.println("key=" + object + " value=" + maps.get(object));  
		}
		
		
		/**
		 *
		 * json转为实体
		 */
		Brand brand = JSONObject.parseObject(s, Brand.class);
		System.out.println(brand + "==============");

		/**
		 *
		 * list集合转json
		 */
		String s1 = JSON.toJSONString(brandList);
		System.out.println(s1 + "999999");
		// json 转list
		List<Brand> brands = JSONObject.parseArray(s1, Brand.class);
		System.out.println(brands);

	}

	/**
	 * List<实体>转为list<Object>
	 *
	 * @param t
	 * @return
	 */
	public List<Object> beanToObject(List<?> t) {
		List<Object> o = new ArrayList<Object>();
		Iterator<?> it = t.iterator();
		while (it.hasNext()) {
			o.add(it.next());
		}

		return o;
	}

	/**
	 * List<objcet> 转为List<Map>
	 *
	 * @param object
	 * @return
	 * @throws Exception
	 */
	public List<Map> beanToMap(List<Object> object) throws Exception {
		List<Map> maps = new ArrayList<Map>();
		for (Object o : object) {
			String s = JSON.toJSONString(o);
			Map map = JSONObject.parseObject(s, Map.class);

			maps.add(map);
		}
		return maps;
	}


	/**
	 * map 转 实体
	 */
	public static <T> T toBean(Class<T> clazz, Map map) {
		T obj = null;
		try {
			BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
			obj = clazz.newInstance(); // 创建 JavaBean 对象

			// 给 JavaBean 对象的属性赋值
			PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
			for (int i = 0; i < propertyDescriptors.length; i++) {
				PropertyDescriptor descriptor = propertyDescriptors[i];
				String propertyName = descriptor.getName();
				if (map.containsKey(propertyName)) {
					// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
					Object value = map.get(propertyName);
					if ("".equals(value)) {
						value = null;
					}
					Object[] args = new Object[1];
					args[0] = value;
					try {
						descriptor.getWriteMethod().invoke(obj, args);
					} catch (InvocationTargetException e) {
						System.out.println("字段映射失败");
					}
				}
			}
		} catch (IllegalAccessException e) {
			System.out.println("实例化 JavaBean 失败");
		} catch (IntrospectionException e) {
			System.out.println("分析类属性失败");
		} catch (IllegalArgumentException e) {
			System.out.println("映射错误");
		} catch (InstantiationException e) {
			System.out.println("实例化 JavaBean 失败");
		}
		return (T) obj;
	}
}

    

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

猜你喜欢

转载自dengqw.iteye.com/blog/2412004