diff --git a/src/main/java/org/skyscreamer/jsonassert/JSONParser.java b/src/main/java/org/skyscreamer/jsonassert/JSONParser.java index a70af96c..904daf49 100644 --- a/src/main/java/org/skyscreamer/jsonassert/JSONParser.java +++ b/src/main/java/org/skyscreamer/jsonassert/JSONParser.java @@ -27,6 +27,7 @@ public class JSONParser { // "A number can be represented as integer, real, or floating point. JSON does not support octal or hex // ... [or] NaN or Infinity". private static final String NUMBER_REGEX = "-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?"; + private static final String BOOLEAN_REGEX = "true|false"; private JSONParser() {} @@ -41,10 +42,12 @@ public static Object parseJSON(final String s) { if (s.trim().startsWith("{")) { return new JSONObject(s); } - else if (s.trim().startsWith("[")) { + if (s.trim().startsWith("[")) { return new JSONArray(s); - } else if (s.trim().startsWith("\"") - || s.trim().matches(NUMBER_REGEX)) { + } + if (s.trim().startsWith("\"") + || s.trim().matches(NUMBER_REGEX) + || s.trim().matches(BOOLEAN_REGEX)) { return new JSONString() { @Override public String toJSONString() { diff --git a/src/test/java/org/skyscreamer/jsonassert/JSONAssertTest.java b/src/test/java/org/skyscreamer/jsonassert/JSONAssertTest.java index e17f684b..2a927805 100644 --- a/src/test/java/org/skyscreamer/jsonassert/JSONAssertTest.java +++ b/src/test/java/org/skyscreamer/jsonassert/JSONAssertTest.java @@ -64,6 +64,14 @@ public void testNumber() { testFail("310.1e-1", "31.01", STRICT); // should fail though numbers are the same? } + @Test + public void testBoolean() { + testPass("true", "true", STRICT); + testFail("true", "false", STRICT); + testPass("false", "false", STRICT); + testFail("false", "true", STRICT); + } + @Test public void testSimple() { testPass("{id:1}", "{id:1}", STRICT);