JSON工具类,对象转JSON

版权声明:本文为博主原创文章,转载请附上原文链接,谢谢! https://blog.csdn.net/qq_21454973/article/details/80461155

基于每次都要写类似这样:

JSONArray arr = new JSONArray();
Iterator<Campus> it = list.iterator();
while (it.hasNext()) {
	Campus campus = (Campus) it.next();
	JSONObject json = new JSONObject();
	json.put("id", campus.getId());
	json.put("name", campus.getName());
	json.put("address", campus.getAddress());
	json.put("remark", campus.getRemark());
	arr.add(json);
	}

特此写个工具类:

结果:

[{"java.lang.Integer":1},{"java.lang.Integer":2},{"java.lang.Integer":3}]
[{"id":3,"title":"斗破苍穹","price":3.3,"publishDate":1527312754008},{"id":3,"title":"斗破苍穹","price":3.3,"publishDate":1527312754008},{"id":3,"title":"斗破苍穹","price":3.3,"publishDate":1527312754008}]

代码:

public class ObjToJson {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(2);
		list.add(3);
		
		List<Book> list2 = new ArrayList<>();
		Book b = new Book();
		b.setId(1);
		list2.add(b);
		b.setId(2);
		b.setPrice(2.2);
		list2.add(b);
		b.setId(3);
		b.setPrice(3.3);
		b.setPublishDate(new Date());
		b.setTitle("斗破苍穹");
		list2.add(b);
		
		JSONArray arr = JSONPut(list);
		System.out.println(arr);
		JSONArray arr2 = JSONPut(list2);
		System.out.println(arr2);
	}
	
	public static JSONArray JSONPut(List<?> list){
		JSONArray arr = new JSONArray();
		for (Iterator<?> iterator = list.iterator(); iterator.hasNext();) {
			Object object = (Object) iterator.next();
			//org.json
			//arr.put(JSONPut(object));
			arr.add(JSONPut(object));
		}
		return arr;
	}
	
	public static JSONObject JSONPut(Object obj){
		JSONObject json = new JSONObject();
		String[] values = getFiledName(obj);
		//基本数据类型
		if("java.lang".equals(obj.getClass().getName().substring(0,9))){
			json.put(obj.getClass().getName(),obj);
			return json;
		}
		for (int i = 0; i < values.length; i++) {
			json.put(values[i], getFieldValueByName(values[i], obj));
		}
		return json;
	}
	
	/** 
	 * 根据属性名获取属性值 
	 * */  
	   private static Object getFieldValueByName(String fieldName, Object o) {  
	       try {    
	           String firstLetter = fieldName.substring(0, 1).toUpperCase();    
	           String getter = "get" + firstLetter + fieldName.substring(1);    
	           Method method = o.getClass().getMethod(getter, new Class[] {});    
	           Object value = method.invoke(o, new Object[] {});    
	           return value;    
	       } catch (Exception e) {    
	           e.getMessage();    
	           return null;    
	       }    
	   }   
	     
	   /** 
	    * 获取属性名数组 
	    * */  
	   private static String[] getFiledName(Object o){  
	    Field[] fields=o.getClass().getDeclaredFields();  
	        String[] fieldNames=new String[fields.length];  
	    for(int i=0;i<fields.length;i++){  
	        fieldNames[i]=fields[i].getName();  
	    }  
	    return fieldNames;  
	   }
}

用的是fastjson;

测试的book类:

public class Book implements Serializable{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
     * 编号
     */
    private int id;
    /**
     * 书名
     */
    private String title;
    /**
     * 价格
     */
    private double price;
    /**
     * 出版日期
     */
    private Date publishDate;

    public Book(int id, String title, double price, Date publishDate) {
        this.id = id;
        this.title = title;
        this.price = price;
        this.publishDate = publishDate;
    }
    
    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Date getPublishDate() {
        return publishDate;
    }

    public void setPublishDate(Date publishDate) {
        this.publishDate = publishDate;
    }
@Override
public String toString() {
return this.getTitle()+"---"+this.getId()+"----"+this.getPrice()+"--------";
}
}

猜你喜欢

转载自blog.csdn.net/qq_21454973/article/details/80461155