文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何给JavaBean赋默认值且转Json字符串

2023-06-29 08:22

关注

这篇文章主要介绍了如何给JavaBean赋默认值且转Json字符串的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何给JavaBean赋默认值且转Json字符串文章都会有所收获,下面我们一起来看看吧。

JavaBean赋默认值并转Json字符串

今日在工作中整理dubbo接口的时候,有些接口参数类型是JavaBean类型的数据,在整理的时候又想直接将JavaBean参数直接以默认的json格式整理,于是想到如何将javaBean的默认值 直接转换成为 Json格式的数据,避免自己手动去拼写json字符串。

此段代码还有值得优化的地方

暂时只支持Java基本数据类型的转换,不支持javaBean中包含其他javaBean对象变量的转换、也不支持List/Map等类型的转换,后期有空想办法优化,大家如果有优化好的代码也可以拿出来分享

废话不多说,直接上代码

package com.up.util.tools; import com.google.gson.Gson; import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.HashMap;import java.util.Map; public class JavaBeanToJson {    public static String toJson(Class clazz) throws Exception {        Gson gson = new Gson();        String result = "";        if (clazz.equals(Map.class)) {            result = clazz.getName() + "\t" + gson.toJson(new HashMap<>());        } else {            Object object = clazz.newInstance();            object = getBean(object);            result = clazz.getName() + "\t" + gson.toJson(object);        }        return result;    }     private static <T> Object getBean(T object) throws Exception {        Class<?> classType = object.getClass();        //SqlRowSet srs = jdbcTemplate.queryForRowSet(sql);        Field[] fields = classType.getDeclaredFields();//得到对象中的字段        //每次循环时,重新实例化一个与传过来的对象类型一样的对象        T objectCopy = (T) classType.getConstructor(new Class[]{}).newInstance(new Object[]{});        for (int i = 0; i < fields.length; i++) {            Field field = fields[i];            String fieldName = field.getName();            Object value = null;            //根据字段类型决定结果集中使用哪种get方法从数据中取到数据            if (field.getType().equals(String.class)) {                value = "";            } else if (field.getType().equals(int.class) || field.getType().equals(Integer.class)) {                value = new Integer(0);            } else if (field.getType().equals(double.class) || field.getType().equals(Double.class)) {                value = new Double(0);            } else if (field.getType().equals(long.class) || field.getType().equals(Long.class)) {                value = new Long(0);            } else if (field.getType().equals(Date.class)) {                value = new Date();            } else if (field.getType().equals(Object.class)) {                value = new Object();            }            // 获得属性的首字母并转换为大写,与setXXX对应            String firstLetter = fieldName.substring(0, 1).toUpperCase();            String setMethodName = "set" + firstLetter                    + fieldName.substring(1);            if (fieldName.equals("serialVersionUID")) {                continue;            }            Method setMethod = classType.getMethod(setMethodName,                    new Class[]{field.getType()});            setMethod.invoke(objectCopy, new Object[]{value});//调用对象的setXXX方法        }         return objectCopy;    }}

javaBean对象和Json格式字符串相互转换

一般前后端开发都是使用json格式的字符串进行交互的,所以javaBean对象转化为json格式字符串和json格式字符串转化为javaBean对象显的很有必要。

下面介绍两种方法:

一.使用Jackson工具类

1.pom依赖

<!--jackson 2.x版本依赖--><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-annotations</artifactId>    <version>2.8.1</version></dependency><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-core</artifactId>    <version>2.8.6</version></dependency><dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.8.6</version></dependency><!--junit依赖--><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.12</version></dependency>

2.程序代码

package com.john.json; import com.fasterxml.jackson.databind.ObjectMapper;import org.junit.Test; import java.io.IOException; public class TestJackson {     @Test    public void testObjAndJson() throws IOException {         Dog dog = new Dog();        dog.setName("樱桃");        dog.setAge(1);        dog.setFood("小米");         //创建Jackson高级对象        ObjectMapper mapper = new ObjectMapper();         //对象转换为对应的json格式字符串        String json = mapper.writeValueAsString(dog);         System.out.println(json);         //json格式字符串转换为对应的对象        Dog dogBack = mapper.readValue(json, Dog.class);         System.out.println(dogBack.getName()+"--"+dogBack.getAge()+"--"+dogBack.getFood());     }}

二.使用Gson工具类

1.pom依赖

<!--gson依赖--><dependency>    <groupId>com.google.code.gson</groupId>    <artifactId>gson</artifactId>    <version>2.2.4</version></dependency><!--junit依赖--><dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.12</version></dependency>

2.程序代码

package com.john.json; import com.google.gson.Gson;import org.junit.Test; public class TestGson {     @Test    public void testObjAndJson() {         Dog dog = new Dog();        dog.setName("妞妞");        dog.setAge(3);        dog.setFood("大米");         //创建gson对象        Gson gson = new Gson();         //对象转化为对应的json格式字符串        String dogJson = gson.toJson(dog);         System.out.println(dogJson);         //json格式字符串转换为对应的对象        Dog dogBack = gson.fromJson(dogJson, Dog.class);         System.out.println(dogBack.getName()+"--"+dogBack.getAge()+"--"+dogBack.getFood());    } }

关于“如何给JavaBean赋默认值且转Json字符串”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何给JavaBean赋默认值且转Json字符串”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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