温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-03-03 10:29:09 来源:亿速云 阅读:510 作者:iii 栏目:开发技术

这篇文章主要介绍了如何给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;   /**  * Created by *** on 2017-3-29  * TIME 11:07.  */ 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字符串”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI