给JavaBean赋默认值并且转Json字符串的实例

目录
  • JavaBean赋默认值并转Json字符串
    • 此段代码还有值得优化的地方
  • javaBean对象和Json格式字符串相互转换
    • 一.使用Jackson工具类
    • 二.使用Gson工具类

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java中json与javaBean几种互转的讲解

    一.java普通对象和json字符串的互转 java对象---->json 首先创建一个java对象: public class Student { //姓名 private String name; //年龄 private String age; //住址 private String address; public String getName() { return name; } public void setName(String name) { this.name = name; }

  • Java实现Json字符串与Object对象相互转换的方式总结

    本文实例总结了Java实现Json字符串与Object对象相互转换的方式.分享给大家供大家参考,具体如下: Json-Lib.Org.Json.Jackson.Gson.FastJson五种方式转换json类型 只列举了最省事的方式.不涉及复制情况和速度. 测试用例,一个User类,属性name,age,location.重写toString(). public class User { private String name; private Integer age; private Stri

  • java Bean与json对象间的转换实例讲解

    java Bean与json对象间的转换 /** * 一 JSON.parseObject() 单个对象 或map 大括号{} * 二 JSON.parseArray() 多个对象 数组[] 复杂的要在类中定义类 * 三 JSON.toJSONString() javaBean与JSON格式字符串之间的转换 * * 四 javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray */ @Test public v

  • 给JavaBean赋默认值并且转Json字符串的实例

    目录 JavaBean赋默认值并转Json字符串 此段代码还有值得优化的地方 javaBean对象和Json格式字符串相互转换 一.使用Jackson工具类 二.使用Gson工具类 JavaBean赋默认值并转Json字符串 今日在工作中整理dubbo接口的时候,有些接口参数类型是JavaBean类型的数据,在整理的时候又想直接将JavaBean参数直接以默认的json格式整理,于是想到如何将javaBean的默认值 直接转换成为 Json格式的数据,避免自己手动去拼写json字符串. 此段代码

  • ASP.NET文本框密码赋默认值的方法

    对于普通的文本输入框,可以使用下边的方法赋默认值: <asp:TextBox ID="TextBox1" runat="server">12345</asp:TextBox> 将输入框类型改为密码后,页面上密码框总是空白,默认值丢失: <asp:TextBox ID="TextBox1" runat="server" TextMode="Password">12345&l

  • mysql查询的时候给字段赋默认值操作

    需求 查询某个字段的时候需要给一个字段同样的值. 这个值你可以写死,也可以从数据库获取 1.写死值 SELECT mfr_id AS mfrId, mfr_name AS mfrName, IFNULL(NULL, 587694978080178176) AS suppId FROM mater_prod materProd 查询结果 2.从数据库获取值 SELECT mfr_id AS mfrId, mfr_name AS mfrName, IFNULL(NULL, mfr_id) AS su

  • java中给实体对象属性的空值赋默认值

    目录 给实体对象属性的空值赋默认值 给实体类赋默认值通用方法 给实体对象属性的空值赋默认值 private final String defaultStr = ""; private final Date defaultDate = new Date(); private final BigDecimal defaultDecimal = new BigDecimal(0); private final Timestamp defaultTimestamp=new Timestamp(

  • 使用SpringMVC返回json字符串的实例讲解

    最近开始接触SpringMVC这个框架,这个框架使用起来很方便,框架搭起来之后,写起代码几乎都是一个模式.当然要走到这一步必须保证你的SpringMVC的相关配置都已经完成,并且配置正确! 作为我的关于S平ringMVC的首篇博客,本篇博客主要说名如何配置SpringMVC,并且可以使之正常的返回Bean实体,这里的bean实体一般返回到前端都是以Json字符串的形式返回的. 使用的开发工具为eclipse,这个也是比较大众化的开发工具了,算的上是人人都会使用的了,只是熟练程度不一样! 具体的配

  • Redis缓存,泛型集合与json字符串的相互转换实例

    难点是泛型如何转换 一.arrayList<Map<String, Object>>转化json字符串,存入redis缓存 ArrayList<Map<String, Object>> listProfit //将ArrayList<Map<String, Object>>类型数据转换成json字符串 String listProfitPctJsonStr = JSON.toJSONString(listProfit); //然后将j

  • Scala解析Json字符串的实例详解

    Scala解析Json字符串的实例详解 1. 添加相应依赖 Json解析工具使用的 json-smart,曾经对比过Java的fastjson.gson.Scala的json4s.lift-json.其中 json-smart 解析速度是最快的. <dependency> <groupId>net.minidev</groupId> <artifactId>json-smart</artifactId> <version>2.3<

  • javascript中JSON对象与JSON字符串相互转换实例

    本文实例讲述了javascript中JSON对象与JSON字符串相互转换实现方法.分享给大家供大家参考.具体如下: <script type="text/javascript"> // 根据JSON对象的属性的名称获取属性的值 var jsonObj = { name: "jxqlovejava" }; // JSON对象 console.log(jsonObj.name); // "jxqlovejava" var jsonStr

  • C#实现对Json字符串处理实例

    本文实例讲述了C#实现对Json字符串处理方法,分享给大家供大家参考.具体分析如下: 一般对于web应用开发人员来说对Json字符串都会很熟悉,其实在很多请求我们返回的都是Json字符串.那对于C#代码如何处理Json字符串呢,.Net封装了一个类叫做JavaScriptSerializer[MSDN Library 链接:http://msdn.microsoft.com/en-us/library/ee191864(v=vs.110).aspx]:这个类提供了一个方法. 下面这个是在快递10

  • C#不同类型的成员变量(字段)的默认值介绍

    创建类的一个实例时,在执行构造函数之前,如果你没有给成员变量赋初始值,C#编译器缺省将每一个成员变量初始化为他的默认值. 如果变量是方法的局部变量,编译器就会认为在使用该变量之前,代码必须给它显示的设定一个值.否则会发生"使用了未赋值的局部变量"的错误. 对于其他情况,编译器会在创建变量时,把变量初始化为默认值.1.对于整型.浮点型.枚举类型(数值型),默认值为0或0.0.2.字符类型的默认值为\x0000.3.布尔类型的默认值为false.4.引用类型的默认值为null. 如果声时变

随机推荐