in johnzon-jsonlogic/src/main/java/org/apache/johnzon/jsonlogic/JohnzonJsonLogic.java [162:209]
public boolean areEqualsWithCoercion(final JsonValue a, final JsonValue b) {
if (a == b) {
return true;
}
if (a == null) {
return false;
}
if (b == null) {
return false;
}
if (a.getValueType() == b.getValueType()) {
return a.equals(b);
}
switch (a.getValueType()) {
case STRING:
switch (b.getValueType()) {
case NUMBER:
try {
return Double.parseDouble(JsonString.class.cast(a).getString()) == JsonNumber.class.cast(b).doubleValue();
} catch (final NumberFormatException nfe) {
return false;
}
case TRUE:
case FALSE:
return isFalsy(a) == isFalsy(b);
default:
return false;
}
case NUMBER:
switch (b.getValueType()) {
case STRING:
try {
return Double.parseDouble(JsonString.class.cast(b).getString()) == JsonNumber.class.cast(a).doubleValue();
} catch (final NumberFormatException nfe) {
return false;
}
case TRUE:
case FALSE:
default:
return isFalsy(a) == isFalsy(b);
}
case TRUE:
case FALSE:
return isFalsy(a) == isFalsy(b);
default:
return false;
}
}