Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当属性名称不同时,java将映射转换为pojo_Java - Fatal编程技术网

当属性名称不同时,java将映射转换为pojo

当属性名称不同时,java将映射转换为pojo,java,Java,当属性名称不同时,是否可以将映射转换为pojo 我将原始输入提取到地图中,以获得以下数据。数据可能因消息类型而异。例如: 对于消息类型=标准 Map<String, Double> data = new HashMap<>(); data.set('TEMP', 18.33); data.set('BTNUM', 123); 目前,我手动将数据映射到POJO类,如下所示 StandardMessage sm = new StandardMessage(); sm.set

当属性名称不同时,是否可以将映射转换为pojo

我将原始输入提取到地图中,以获得以下数据。数据可能因消息类型而异。例如:

对于消息类型=标准

Map<String, Double> data = new HashMap<>();
data.set('TEMP', 18.33);
data.set('BTNUM', 123);
目前,我手动将数据映射到POJO类,如下所示

StandardMessage sm = new StandardMessage();
sm.setLongitude(data.get('GPSLON'));

NonStandardMessage nsm = new NonStandardMessage();
nsm.setTemperature(data.get('TEMP'));
是否可以将上述映射设置为通用映射?i、 在不知道名称的情况下设置对象属性

在Typescript中,我们可以通过定义如下配置轻松实现这一点:

objectPropertyMapping = new Map();
objectPropertyMapping.set('GPSLAT', 'latitude');
objectPropertyMapping.set('GPSLON', 'longitude');

standardMessage = {};
data.forEach((value: boolean, key: string) => {
    standardMessage[ObjectPropertyMapping.get(key)] = data[key];
});

我知道Java是一种静态类型的语言,只是想知道有没有一种方法可以像typescript一样实现这一点,或者我们必须一直手动映射?

我们使用。它使用注释进行配置

以下是一些示例:

实体类:

class MessageRequest {

    @JsonProperty("A")
    private String title;
    @JsonProperty("B")
    private String body;

    ... getters and setters ...
}
主要方法是:

public static void main(String[] args) {
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> source = new HashMap<>();
    source.put("A", "This is the title");
    source.put("B", "Here is the body");


    MessageRequest req = objectMapper.convertValue(source, MessageRequest.class);

    System.out.println(req.getTitle());
    System.out.println(req.getBody());

}
publicstaticvoidmain(字符串[]args){
ObjectMapper ObjectMapper=新的ObjectMapper();
Map source=new HashMap();
来源:put(“A”,“这是标题”);
来源:put(“B”,“这是尸体”);
MessageRequest req=objectMapper.convertValue(源,MessageRequest.class);
System.out.println(req.getTitle());
System.out.println(req.getBody());
}

非常感谢!!没想到会这么简单!!
class MessageRequest {

    @JsonProperty("A")
    private String title;
    @JsonProperty("B")
    private String body;

    ... getters and setters ...
}
public static void main(String[] args) {
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> source = new HashMap<>();
    source.put("A", "This is the title");
    source.put("B", "Here is the body");


    MessageRequest req = objectMapper.convertValue(source, MessageRequest.class);

    System.out.println(req.getTitle());
    System.out.println(req.getBody());

}