当属性名不同时,是否可以将map转换为pojo?
我正在将原始输入提取到地图中,以获得以下数据。数据可能因消息类型而异。例如:
Map<String, Double> data = new HashMap<>();
data.set('TEMP', 18.33);
data.set('BTNUM', 123);
对于消息类型=非标准
Map<String, Double> data = new HashMap<>();
data.set('GPSLAT', 12.33);
data.set('GPSLON', 42.33);
对于每种消息类型,我都有一个Java模型类
@Data
public class StandardMessage {
private String longitude;
private String latitude;
}
@Data
public class NonStandardMessage {
private String temperature;
private String btNumber;
}
StandardMessage sm = new StandardMessage();
sm.setLongitude(data.get('GPSLON'));
NonStandardMessage nsm = new NonStandardMessage();
nsm.setTemperature(data.get('TEMP'));
有没有可能使上述映射通用?i、 在不知道名称的情况下设置对象属性?
objectPropertyMapping = new Map();
objectPropertyMapping.set('GPSLAT', 'latitude');
objectPropertyMapping.set('GPSLON', 'longitude');
standardMessage = {};
data.forEach((value: boolean, key: string) => {
standardMessage[ObjectPropertyMapping.get(key)] = data[key];
});
https://stackblitz.com/edit/angular-zjn1kc?file=src%2Fapp%2Fapp.component.ts
我知道Java是一种静态类型的语言,只是想知道有没有一种方法可以像typescript那样实现这一点,或者我们必须一直手动映射?