JSON工具類,物件轉JSON
阿新 • • 發佈:2019-01-22
基於每次都要寫類似這樣:
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()+"--------"; } }