JAVA 对象转换为JSON

转载:如何把java对象转换为json java对象怎么转成json_clghxq的技术博客_51CTO博客

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

参考:

父类转换成子类, 或者是类之间属性拷贝_父类对象转换为子类对象_孔先生在吗的博客-CSDN博客

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/16f0adcd32.html