基于每次都要写类似这样:
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()+"--------";
}
}