文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JAVA 对象转换为JSON

2023-09-06 19:19

关注

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

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

json转bean

JSONObject.toBean(targetJson, targetClass);

实例

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

将父类对象转化为子类对象:

创建父类实例,将父类实例化

将子类实例转化成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

使用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);    }

使用Spring类的方法:

Foo foo = new Foo();Son son = new Son();BeanUtils.copyProperties(foo, son);

参考:

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

来源地址:https://blog.csdn.net/u200814342A/article/details/132291033

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯