fix Reader bug and add testcase (#1122)

diff --git a/src/lib_json/json_reader.cpp b/src/lib_json/json_reader.cpp
index 87483da..9818b5b 100644
--- a/src/lib_json/json_reader.cpp
+++ b/src/lib_json/json_reader.cpp
@@ -467,7 +467,7 @@
       Value numberName;
       if (!decodeNumber(tokenName, numberName))
         return recoverFromError(tokenObjectEnd);
-      name = String(numberName.asCString());
+      name = numberName.asString();
     } else {
       break;
     }
diff --git a/src/test_lib_json/main.cpp b/src/test_lib_json/main.cpp
index 6f4bbde..6f52304 100644
--- a/src/test_lib_json/main.cpp
+++ b/src/test_lib_json/main.cpp
@@ -2648,6 +2648,10 @@
         new Json::Reader(Json::Features{}.strictMode()));
   }
 
+  void setFeatures(Json::Features& features) {
+    reader = std::unique_ptr<Json::Reader>(new Json::Reader(features));
+  }
+
   void checkStructuredErrors(
       const std::vector<Json::Reader::StructuredError>& actual,
       const std::vector<Json::Reader::StructuredError>& expected) {
@@ -2851,6 +2855,13 @@
                                "See Line 1, Column 14 for detail.\n");
 }
 
+JSONTEST_FIXTURE_LOCAL(ReaderTest, allowNumericKeysTest) {
+  Json::Features features;
+  features.allowNumericKeys_ = true;
+  setFeatures(features);
+  checkParse(R"({ 123 : "abc" })");
+}
+
 struct CharReaderTest : JsonTest::TestCase {};
 
 JSONTEST_FIXTURE_LOCAL(CharReaderTest, parseWithNoErrors) {