JAVA 对象转换为JSON

作者: adm 分类: java 发布时间: 2023-10-30

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格式
        List list = 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依赖的包:



net.sf.json-lib
json-lib
2.4
jdk15


org.json
json
20230227



net.sf.ezmorph
ezmorph
1.0.6



commons-beanutils
commons-beanutils
1.9.4



commons-collections
commons-collections
3.2.2



org.apache.commons
commons-lang3
3.4



commons-lang
commons-lang
2.6



commons-logging
commons-logging
1.2



commons-io
commons-io
2.4

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);

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!