JAVA 对象转换为JSON
1、Java对象列表转换为JSON对象数组,并转为字符串
JSONArray jsonArray = JSONArray.fromObject(list); String jsonArrayStr = jsonArray.toString();
2、把Java对象转换成JSON对象,并转化为字符串
JSONObject jsonObject = JSONObject.fromObject(obj); String jsonObjectStr = jsonObject.toString();
3、过滤不需要转换为JSON格式的属性
使用jsonConfig对象的setExcludes()方法,传入参数为待过滤属性组成的数组。
JsonConfig cfg = new JsonConfig(); cfg.setExcludes(new String[] {“待过滤属性1”, “待过滤属性2”, ..., “待过滤属性n”});
4. json转bean
JSONObject.toBean(targetJson, targetClass);
5、实例
package com.ajax.test; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; public class Customer { public Customer(String name, String id) { super(); this.name = name; this.id = id; } private String name; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public static void main(String[] args) throws JsonProcessingException { //包含多个对象的List集合转换为JSON格式 Listlist = new ArrayList (); Customer c1 = new Customer("Alice", "001"); Customer c2 = new Customer("Bruce", "002"); Customer c3 = new Customer("Cindy", "003"); list.add(c1); list.add(c2); list.add(c3); JsonConfig config1 = new JsonConfig(); //过滤List集合中的Customer对象的id属性不生成JSON config1.setExcludes(new String[] {"id"}); JSONArray jsonArray = JSONArray.fromObject(list, config1); System.out.println(jsonArray.toString()); //一个对象转换为JSON格式 Customer c = new Customer("Boss", "004"); JsonConfig config2 = new JsonConfig(); //过滤Customer对象的id属性不生成JSON config2.setExcludes(new String[] {"id"}); JSONObject jsonObject = JSONObject.fromObject(c, config2); System.out.println(jsonObject.toString()); } }
6.将父类对象转化为子类对象:
创建父类实例,将父类实例化
将子类实例转化成json
将父类实例转化成json
遍历父类json实例,使用子类json获取vaule值,设置到父类json中。
代码如下:
public static Object createBeanWith(Class targetClass, Object source) { Object target = null; try { target = targetClass.newInstance(); } catch (Exception e) { return null; } JSONObject targetJson = JSONObject.fromObject(target); JSONObject sourceJson = JSONObject.fromObject(source); for (Object key : targetJson.keySet()) { if (sourceJson.containsKey(key)) { targetJson.put(key, sourceJson.get(key)); } } return JSONObject.toBean(targetJson, targetClass); }
精简写法:
Object result = JSONObject.parseObject(JSONObject.toJSONString(source), targetClass);
maven依赖的包:
7、使用hutool工具类
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; public static Object createBeanWith(Class targetClass, Object source) { Object target = null; try { target = targetClass.newInstance(); } catch (Exception e) { return null; } JSONObject targetJson = JSONUtil.parseObj(target, false); JSONObject sourceJson = JSONUtil.parseObj(source, false); for (String key : targetJson.keySet()) { if (sourceJson.containsKey(key)) { targetJson.set(key, sourceJson.get(key)); } } return JSONUtil.toBean(targetJson, targetClass); }
8、 使用Spring类的方法:
/** * 这种方式是用了Spring的工具类, 不关乎是否有继承关系, * 只要有相同的属性就会拷贝进去 */ Foo foo = new Foo(); Son son = new Son(); BeanUtils.copyProperties(foo, son);