Implemented #149
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 3eb3111..0969947 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -3,6 +3,8 @@
 
 #88: Prevent use of type information for `JsonNode` via default typing
  (reported by electricmonk@github)
+#149: Allow use of "stringified" indexes for Enum values
+ (requested by chenboxiang@github)
 #335: Allow use of `@JsonProperytOrder(alphabetic=true)` for Map properties
 #353: Problems with polymorphic types, `JsonNode` (related to #88)
  (reported by cemo@github)
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
index 1fddc4d..5285d3b 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
@@ -82,10 +82,25 @@
             String name = jp.getText();
             Enum<?> result = _resolver.findEnum(name);
             if (result == null) {
-                if (ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
-                    if (name.length() == 0 || name.trim().length() == 0) {
+                name = name.trim();
+                if (name.length() == 0) {
+                    if (ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
                         return null;
                     }
+                } else {
+                    // [#149]: Allow use of 'String' indexes as well
+                    char c = name.charAt(0);
+                    if (c >= '0' && c <= '9') {
+                        try {
+                            int ix = Integer.parseInt(name);
+                            result = _resolver.getEnum(ix);
+                            if (result != null) {
+                                return result;
+                            }
+                        } catch (NumberFormatException e) {
+                            // fine, ignore, was not an integer
+                        }
+                    }
                 }
                 if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) {
                     throw ctxt.weirdStringException(name, _resolver.getEnumClass(),
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
index 764f930..5c39333 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
@@ -19,12 +19,6 @@
 public class TestEnumDeserialization
     extends BaseMapTest
 {
-    /*
-    /**********************************************************
-    /* Helper classes, enums
-    /**********************************************************
-     */
-
     enum TestEnum { JACKSON, RULES, OK; }
 
     /**
@@ -394,4 +388,16 @@
             //exception as thrown correctly
         }
     }
+
+    // [Issue#149]: 'stringified' indexes for enums
+    public void testIndexAsString() throws Exception
+    {
+        // first, regular index ought to work fine
+        TestEnum en = MAPPER.readValue("2", TestEnum.class);
+        assertSame(TestEnum.values()[2], en);
+
+        // but also with quoted Strings
+        en = MAPPER.readValue(quote("1"), TestEnum.class);
+        assertSame(TestEnum.values()[1], en);
+    }
 }