服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - java 实现反射 json动态转实体类--fastjson

java 实现反射 json动态转实体类--fastjson

2021-08-10 10:49HL_123123 Java教程

这篇文章主要介绍了java 实现反射 json动态转实体类--fastjson,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package test.refect;
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;
    }
 
    public String getAge() {
        return age;
    }
 
    public void setAge(String age) {
        this.age = age;
    }
 
    public String getAddress() {
        return address;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + ", address=" + address + "]";
    }
    
    public void sayHello(Book book){
        System.out.println(book.getName());    
    }
}
?
1
2
3
4
5
6
7
8
9
10
package test.refect;
public class Book {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package test.refect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import com.alibaba.fastjson.JSONObject;
public class ExecuteWithFastJson {
    public static <T> void main(String[] args) {
        
        // Student str --> Student 主类
        String str = "test.refect.Student";
        Class<?> clazz = null;
        try {
            clazz = Class.forName(str);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        // Book实体 str --> Book 参数类
        String bookStr = "test.refect.Book";
        Class<?> bookClazz = null;
        try {
            bookClazz = Class.forName(bookStr);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        // json --> Book 将参数类转为JSONOBJECT
        String bookJson = "{\"name\":\"Java\"}";
        
 
        // 实例化参数类
        T t = (T) JSONObject.parseObject(bookJson, bookClazz);
        
        // 将参数类注入到主类
        Method method =null;
        try {
            method = clazz.getDeclaredMethod("sayHello", bookClazz);
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
        // 执行主类
        try {
            method.invoke(clazz.newInstance(), t);
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InstantiationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

补充:使用fastjson 进行jsonObject转实体类对象

?
1
2
3
4
5
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.7</version>
</dependency>

首先引入相关jar包,

假设有一个实体类User

?
1
2
3
4
public class User{
 private int id;
 private String name; 
}

然后通过fastJson进行类型转换

?
1
2
3
4
5
6
public static void main(String[] args){
  String userString = "{"id":1,"name","lz"}";
  JSONObject userJson = JSONObject.parseObject(userString);
  User user = JSON.toJavaObject(userJson,User.class);
  
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/huanglei1234567890/article/details/80542596

延伸 · 阅读

精彩推荐
  • Java教程SpringBoot+layui实现文件上传功能

    SpringBoot+layui实现文件上传功能

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了SpringBoot+layui实现文件上传,需要...

    蓝胖子的白日梦6282021-05-29
  • Java教程Java使用自动化部署工具Gradle中的任务设定教程

    Java使用自动化部署工具Gradle中的任务设定教程

    Grandle使用同样运行于JVM上的Groovy语言编写,本文会对此进行初步够用的讲解,接下来我们就一起来看一下Java使用自动化部署工具Gradle中的任务设定教程: ...

    hi大头鬼hi2592020-05-18
  • Java教程Java实现矩阵乘法以及优化的方法实例

    Java实现矩阵乘法以及优化的方法实例

    这篇文章主要给大家介绍了关于Java实现矩阵乘法以及优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    GGG_Yu3672021-08-04
  • Java教程全面解析Spring Security 过滤器链的机制和特性

    全面解析Spring Security 过滤器链的机制和特性

    这篇文章主要介绍了Spring Security 过滤器链的机制和特性,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考...

    码农小胖哥2412020-07-07
  • Java教程java从字符串中提取数字的简单实例

    java从字符串中提取数字的简单实例

    下面小编就为大家带来一篇java从字符串中提取数字的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    java教程网6602020-06-27
  • Java教程详解Java中的final关键字的使用

    详解Java中的final关键字的使用

    这篇文章主要介绍了详解Java中的final关键字的使用,是Java入门学习中的基础知识,需要的朋友可以参考下 ...

    低调小一3192019-12-30
  • Java教程Spring AOP入门Demo分享

    Spring AOP入门Demo分享

    这篇文章主要介绍了Spring AOP入门Demo分享,涉及创建maven项目,编写切面类,通过bean配置关联等相关内容,具有一定借鉴价值,需要的朋友可以参考下。...

    kite___4832021-02-27
  • Java教程idea 无法debug调试的解决方案

    idea 无法debug调试的解决方案

    这篇文章主要介绍了idea 无法debug调试的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    梦昼初心6622020-09-09