# Import GeoJSON features with nested properties

The `geo_json` format reads a GeoJSON FeatureCollection and binds its fixed `id`, `geometry` and `properties` members. Nested properties can remain a JSON document instead of being flattened into unrelated columns during ingestion.

## Establish the destination contract

Choose a compatible native geometry type for the shapes being imported and a JSON declaration for flexible properties. Validate a small source file before a full import. Supported shapes include Point, MultiPoint, LineString, MultiLineString, Polygon and MultiPolygon. GeometryCollection is unsupported; the documented null policy can validate and replace it on input.

Use JSON functions to inspect an array-valued property after import. JSON arrays use zero-based indexes, which differ from native Array indexing. For example, extracting the first tag from a JSON document uses a JSON path such as `$.tags[0]`.

## Check geometry and properties independently

Coordinates must be finite. Geometry validation also checks ring closure, minimum line or ring sizes and nonempty collections. A syntactically valid JSON document can still fail these geometry requirements. Inspect the failing feature rather than disabling validation for an entire dataset.

When exporting, select exactly one native geometry column; other columns become properties unless a single object-valued `properties` column supplies them directly.

See [geo_json](https://coordinatordb.com/docs/reference/formats/geo-json), [geometry types](https://coordinatordb.com/docs/reference/data-types/geometry-types) and [JSON functions](https://coordinatordb.com/docs/reference/functions/regular-functions/json-functions).
