Implement #32
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 3e64d17..c80ac0c 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -5,6 +5,7 @@
  only .0 releases can have changes.
 
 #31: Allow use of `@JsonPropertyOrder` for properties (not just classes)
+#32: Add `@JsonProperty.index`
 - Add `JsonFormat.Value#timeZoneAsString` (needed by Joda module)
 
 ------------------------------------------------------------------------
diff --git a/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java b/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
index 242c7b7..ce3d336 100644
--- a/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
+++ b/src/main/java/com/fasterxml/jackson/annotation/JsonProperty.java
@@ -32,6 +32,15 @@
     public final static String USE_DEFAULT_NAME = "";
 
     /**
+     * Marker value used to indicate that no index has been specified.
+     * Used as the default value as annotations do not allow "missing"
+     * values.
+     * 
+     * @since 2.4
+     */
+    public final static int INDEX_UNKNOWN = -1;
+    
+    /**
      * Defines name of the logical property, i.e. JSON object field
      * name to use for the property. If value is empty String (which is the
      * default), will try to use name of the field that is annotated.
@@ -59,6 +68,16 @@
      */
     boolean required() default false;
 
+    /**
+     * Property that indicates numerical index of this property (relative
+     * to other properties specified for the Object). This index
+     * is typically used by binary formats, but may also be useful
+     * for schema languages and other tools.
+     * 
+     * @since 2.4
+     */
+    int index() default INDEX_UNKNOWN;
+    
     /* NOTE: considering of adding ability to specify default
      * String value -- would work well for scalar types, most of
      * which can coerce from Strings. But won't add for 2.0 yet.