Index: /trunk/src/org/openstreetmap/josm/io/GeoJSONReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GeoJSONReader.java	(revision 17355)
+++ /trunk/src/org/openstreetmap/josm/io/GeoJSONReader.java	(revision 17356)
@@ -45,4 +45,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.Utils;
@@ -85,4 +86,6 @@
                 .orElseThrow(() -> new IllegalDataException("No type")).getString()) {
             case "FeatureCollection":
+                JsonValue.ValueType valueType = object.get(FEATURES).getValueType();
+                CheckParameterUtil.ensureThat(valueType == JsonValue.ValueType.ARRAY, "features must be ARRAY, but is " + valueType);
                 parseFeatureCollection(object.getJsonArray(FEATURES));
                 break;
Index: /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONReaderTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONReaderTest.java	(revision 17355)
+++ /trunk/test/unit/org/openstreetmap/josm/io/GeoJSONReaderTest.java	(revision 17356)
@@ -216,3 +216,17 @@
     }
 
+    /**
+     * Tests error reporting for an invalid FeatureCollection
+     * @throws Exception in case of error
+     */
+    @Test
+    void testInvalidFeatureCollection() throws Exception {
+        String featureCollection = "{\"type\": \"FeatureCollection\", \"features\": {}}";
+        try (InputStream in = new ByteArrayInputStream(featureCollection.getBytes(StandardCharsets.UTF_8))) {
+            IllegalArgumentException exception = assertThrows(IllegalArgumentException.class,
+                    () -> new GeoJSONReader().doParseDataSet(in, null));
+            assertEquals("features must be ARRAY, but is OBJECT", exception.getMessage());
+        }
+    }
+
 }
