diff --git a/src/applications/config/json/PhabricatorConfigJSON.php b/src/applications/config/json/PhabricatorConfigJSON.php
--- a/src/applications/config/json/PhabricatorConfigJSON.php
+++ b/src/applications/config/json/PhabricatorConfigJSON.php
@@ -8,12 +8,34 @@
    * @return string
    */
   public static function prettyPrintJSON($value) {
-    // Check not only that it's an array, but that it's an "unnatural" array
-    // meaning that the keys aren't 0 -> size_of_array.
-    if (is_array($value) && array_keys($value) != range(0, count($value) - 1)) {
-      $result = id(new PhutilJSON())->encodeFormatted($value);
-    } else {
-      $result = json_encode($value);
+    // If the value is an array with keys "0, 1, 2, ..." then we want to
+    // show it as a list.
+    // If the value is an array with other keys, we want to show it as an
+    // object.
+    // Otherwise, just use the default encoder.
+
+    $type = null;
+    if (is_array($value)) {
+      $list_keys = range(0, count($value) - 1);
+      $actual_keys = array_keys($value);
+
+      if ($actual_keys === $list_keys) {
+        $type = 'list';
+      } else {
+        $type = 'object';
+      }
+    }
+
+    switch ($type) {
+      case 'list':
+        $result = id(new PhutilJSON())->encodeAsList($value);
+        break;
+      case 'object':
+        $result = id(new PhutilJSON())->encodeFormatted($value);
+        break;
+      default:
+        $result = json_encode($value);
+        break;
     }
 
     // For readability, unescape forward slashes. These are normally escaped
diff --git a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
--- a/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
+++ b/src/applications/maniphest/config/PhabricatorManiphestConfigOptions.php
@@ -242,6 +242,15 @@
 
     $custom_field_type = 'custom:PhabricatorCustomFieldConfigOptionType';
 
+    $fields_example = array(
+      'mycompany.estimated-hours' => array(
+        'name' => pht('Estimated Hours'),
+        'type' => 'int',
+        'caption' => pht('Estimated number of hours this will take.'),
+      ),
+    );
+    $fields_json = id(new PhutilJSON())->encodeFormatted($fields_example);
+
     return array(
       $this->newOption('maniphest.custom-field-definitions', 'wild', array())
         ->setSummary(pht('Custom Maniphest fields.'))
@@ -250,11 +259,7 @@
             'Array of custom fields for Maniphest tasks. For details on '.
             'adding custom fields to Maniphest, see "Configuring Custom '.
             'Fields" in the documentation.'))
-        ->addExample(
-          '{"mycompany:estimated-hours": {"name": "Estimated Hours", '.
-          '"type": "int", "caption": "Estimated number of hours this will '.
-          'take."}}',
-          pht('Valid Setting')),
+        ->addExample($fields_json, pht('Valid setting')),
       $this->newOption('maniphest.fields', $custom_field_type, $default_fields)
         ->setCustomData(id(new ManiphestTask())->getCustomFieldBaseClass())
         ->setDescription(pht('Select and reorder task fields.')),