Fix behavior for simple double values
This commit is contained in:
parent
78ae90da7a
commit
16f548d3dd
@ -229,7 +229,7 @@ public class JsonConverter {
|
||||
String valueAsString = value.getAsString();
|
||||
KeyValueProto.Builder builder = KeyValueProto.newBuilder().setKey(key);
|
||||
var bd = new BigDecimal(valueAsString);
|
||||
if (bd.stripTrailingZeros().scale() <= 0) {
|
||||
if (bd.stripTrailingZeros().scale() <= 0 && !isSimpleDouble(valueAsString)) {
|
||||
try {
|
||||
return builder.setType(KeyValueType.LONG_V).setLongV(bd.longValueExact()).build();
|
||||
} catch (ArithmeticException e) {
|
||||
@ -251,6 +251,10 @@ public class JsonConverter {
|
||||
|
||||
}
|
||||
|
||||
private static boolean isSimpleDouble(String valueAsString) {
|
||||
return valueAsString.contains(".") && !valueAsString.contains("E") && !valueAsString.contains("e");
|
||||
}
|
||||
|
||||
public static TransportProtos.ToServerRpcRequestMsg convertToServerRpcRequest(JsonElement json, int requestId) throws JsonSyntaxException {
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
return TransportProtos.ToServerRpcRequestMsg.newBuilder().setRequestId(requestId).setMethodName(object.get("method").getAsString()).setParams(GSON.toJson(object.get("params"))).build();
|
||||
@ -260,7 +264,7 @@ public class JsonConverter {
|
||||
String valueAsString = value.getAsString();
|
||||
String key = valueEntry.getKey();
|
||||
var bd = new BigDecimal(valueAsString);
|
||||
if (bd.stripTrailingZeros().scale() <= 0) {
|
||||
if (bd.stripTrailingZeros().scale() <= 0 && !isSimpleDouble(valueAsString)) {
|
||||
try {
|
||||
result.add(new LongDataEntry(key, bd.longValueExact()));
|
||||
} catch (ArithmeticException e) {
|
||||
|
||||
@ -53,6 +53,12 @@ public class JsonConverterTest {
|
||||
Assert.assertEquals(10L, result.get(0).getLongValue().get().longValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseAsDoubleWithZero() {
|
||||
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 42.0}"), 0L);
|
||||
Assert.assertEquals(42.0, result.get(0L).get(0).getDoubleValue().get(), 0.0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParseAsDouble() {
|
||||
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 1.1}"), 0L);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user