【发布时间】:2023-03-10 17:43:01
【问题描述】:
如果有人知道更好的算法来解析和映射 NOT JSON 字符串到 DTO 而不是这个?
@Getter
@Setter
public class SensorDataDTO {
private String serial;
private Double moisture;
private Integer humidity;
}
SensorDataDTO parseAndMapSensorData(String rawMessage) {
// bad message = "Sensor Connected!";
// or message can be like this "serial=AA12;moisture=3,14;";
// or "serial=AA12;moisture=3,14;humidity=75;";
// or completely different.
if (rawMessage.contains(";")) {
SensorDataDTO sensorDataDTO = new SensorDataDTO();
Map<String, String> mapMessage = Splitter.on(';')
.omitEmptyStrings()
.trimResults()
.withKeyValueSeparator(
Splitter.on('=')
.limit(2)
.trimResults())
.split(rawMessage);
for (Map.Entry<String, String> entry : mapMessage.entrySet()) {
if (serial.equals(entry.getKey()))
sensorDataDTO.setSerial(entry.getValue());
if (secondKey.equals(entry.getKey()))
sensorDataDTO.setMoisture(Double.parseDouble(entry.getValue()));
if (thirdKey.equals(entry.getKey()))
sensorDataDTO.setHumidity(Integer.parseInt(entry.getValue()));
}
return sensorDataDTO;
}
return null;
}
我很欣赏所有类型的信息,但没有兴趣为这种情况添加一些特定的库或依赖项。
【问题讨论】: