Java获取类或对象中的字段名称和JsonProperty注释的名称

创建一个模型如下:

package model;

import com.fasterxml.jackson.annotation.JsonProperty;

public class ProvNode
{
    @JsonProperty("machineId")
    private String nodeId;

    private String name;

    private String result;

    private String status;

    @JsonProperty("message")
    private String msg;

    @JsonProperty("privateIpAddress")
    private String privateIpAddr;

    @JsonProperty("publicIpAddress")
    private String publicIpAddr;

    @JsonProperty("launchtime")
    private Long launchTime;

    public String getNodeId()
    {
        return nodeId;
    }

    public void setNodeId(String nodeId)
    {
        this.nodeId = nodeId;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getResult()
    {
        return result;
    }

    public void setResult(String result)
    {
        this.result = result;
    }

    public String getStatus()
    {
        return status;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getMsg()
    {
        return msg;
    }

    public void setMsg(String msg)
    {
        this.msg = msg;
    }

    public String getPrivateIpAddr()
    {
        return privateIpAddr;
    }

    public void setPrivateIpAddr(String privateIpAddr)
    {
        this.privateIpAddr = privateIpAddr;
    }

    public String getPublicIpAddr()
    {
        return publicIpAddr;
    }

    public void setPublicIpAddr(String publicIpAddr)
    {
        this.publicIpAddr = publicIpAddr;
    }

    public Long getLaunchTime()
    {
        return launchTime;
    }

    public void setLaunchTime(Long launchTime)
    {
        this.launchTime = launchTime;
    }
}

创建一个Test类:

import java.lang.reflect.Field;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.ibm.spectrum.prov.model.ProvNode;

public class Test
{

    public static void main(String[] args)
    {
        for (Field field : ProvNode.class.getDeclaredFields())
        {
            JsonProperty annotation = field.getAnnotation(JsonProperty.class);
            if (null == annotation)
            {
                System.out.println(field.getName());
                continue;
            }
            System.out.println(annotation.value());
        }
    }
}

结果如下:

machineId
name
result
status
message
privateIpAddress
publicIpAddress
launchtime

原文地址:https://www.cnblogs.com/wisdom-projects/p/11162003.html

时间: 2024-08-26 14:03:41

Java获取类或对象中的字段名称和JsonProperty注释的名称的相关文章

使用jni直接访问java对象中的字段

Java类:UserInfo public class UserInfo { static { System.loadLibrary("userinfo"); } // 从JNI中直接访问字段 public String mUserName; public int mUserAge; public long mMoney; public UserInfo() { } public int getUserAge() { return mUserAge; } public native v

java 利用反射修改对象中的list类型字段中的值。

这两天没事学习下了反射.通过反射我们可以修改对象中的字段的值. 就如下面这段代码 Grade grade=new Grade(); Field f=Grade.class.getDeclaredField("name"); f.setAccessible(true); f.set(grade, "三年级一班"); 这是so easy的,这时我想到了要是list类型的字段该怎么通过反射修改呢. 于是我就尝试了下,最终做了出来. 先准备两个类. public class

Java获取未知类型对象的属性

获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属性,这种方式在开发时是比较简便易实现的. 一.关于注解 1.自定义注解 首先定义一个@interface类型的注解接口 @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ClassBean

第31节:Java基础-类与对象

前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载和构造方法的重载 方法的重载 在一个类中可以有多个方法具有相同的名字,但是这些方法的参数个数不同,或参数类型不同,即为方法的重载. class Demo{ // one void dashu(String name){ System.out.println(name); } // two void

Java面向对象-类与对象

Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建和使用 看下面实例 我们在com.java1234.chap03.sec01包下新建一个Person类 1 package com.java1234.chap03.sec01; 2 3 /** 4 * Person类 文件名和类名必须一致 5 * @author user 6 * 7 */ 8 pu

关于Java构造类与对象的思考

简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析. 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: Pic3.在原版的基础上抹掉了B.foo方法: Pic4.抹掉了原版的B.foo方法,同时去掉了T.foo方法中的this关键字: 这四个图全方位地对this和super两个关键字的有无进行了测试,测试结果表明:这些版本的程序的运行结果都一样... 在这里,还是插一张流程图: 首先说一下super关键

学习java随笔第七篇:java的类与对象

类 同一个包(同一个目录),类的创建与调用 class Man{ String name; void GetMyName() { System.out.println(name); } } public class Person { public static void main(String arges[]) { Man m=new Man(); m.name="小黄"; m.GetMyName(); } } 运行结果 不同的包(不同目录目录),类的创建与调用 package Peo

数组对象如何根据对象中某个字段分组

场景:做报表图形展示时,接口返回的数据通常为一组数据对象,需要根据code进行分组,将数据分类成几组,用图形描绘出来 措施:代码如下 返回数组对象包括name和data两个字段,data中包括原数组对象中所有字段. function groupByType(arr,param) { var map = {}, dest = []; for(var i = 0; i < arr.length; i++){ var ai = arr[i]; if(ai[param] && !map[ai

Java反射获取类和对象信息全解析

反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.forName(String clazzName)静态方法 调用类的class属性,Person.class返回的就是Person的class对象(推荐使用) 调用某个对象的getClass()方法 具体使用还是要根据实际来选择,第一种方式是比较自由的,只要知道一个类名就可以了,其不会做该类是否存在的