diff --git a/spec/std/json/parser_spec.cr b/spec/std/json/parser_spec.cr
index c342998920c64b14e58e24bfa33c9e2a6d0aca33..7bc6d984a71e05a600a329acadf9d2cdc9cb72d9 100644
--- a/spec/std/json/parser_spec.cr
+++ b/spec/std/json/parser_spec.cr
@@ -16,6 +16,13 @@ def it_raises_on_parse_json(string)
 end
 
 describe "Json::Parser" do
+  it_parses_json "1", 1
+  it_parses_json "2.5", 2.5
+  it_parses_json %("hello"), "hello"
+  it_parses_json "true", true
+  it_parses_json "false", false
+  it_parses_json "null", nil
+
   it_parses_json "[]", [] of Int32
   it_parses_json "[1]", [1]
   it_parses_json "[1, 2, 3]", [1, 2, 3]
diff --git a/src/json/parser.cr b/src/json/parser.cr
index 62474f19598976e573288ac866cc1065f34c0e3d..787372bd32722b25adb439b5c9a84b5d6dfdb5e2 100644
--- a/src/json/parser.cr
+++ b/src/json/parser.cr
@@ -5,11 +5,30 @@ class Json::Parser
   end
 
   def parse
-    json = parse_array_or_object
+    json = parse_value
     check :EOF
     json
   end
 
+  private def parse_value
+    case @token.type
+    when :INT
+      value_and_next_token @token.int_value
+    when :FLOAT
+      value_and_next_token @token.float_value
+    when :STRING
+      value_and_next_token @token.string_value
+    when :null
+      value_and_next_token nil
+    when :true
+      value_and_next_token true
+    when :false
+      value_and_next_token false
+    else
+      parse_array_or_object
+    end
+  end
+
   private def parse_array_or_object
     case @token.type
     when :"["
@@ -79,25 +98,6 @@ class Json::Parser
     object
   end
 
-  private def parse_value
-    case @token.type
-    when :INT
-      value_and_next_token @token.int_value
-    when :FLOAT
-      value_and_next_token @token.float_value
-    when :STRING
-      value_and_next_token @token.string_value
-    when :null
-      value_and_next_token nil
-    when :true
-      value_and_next_token true
-    when :false
-      value_and_next_token false
-    else
-      parse_array_or_object
-    end
-  end
-
   private def value_and_next_token(value)
     next_token
     value