# Polars Genson > Infer a schema from JSON string columns and normalise them into typed Polars columns polars-genson infers a schema from a column of JSON strings in a Polars DataFrame or Parquet file, then normalises every row to it, so JSON whose rows differ in shape becomes consistent typed Polars columns. ## Getting started - [Getting started](https://polars-genson.vercel.app/get_started/index.md): Installation and a quickstart ## Guides - [Infer a schema](https://polars-genson.vercel.app/guides/infer-schema/index.md): Infer a Polars schema, JSON Schema or Avro schema from a JSON column - [Normalise a column](https://polars-genson.vercel.app/guides/normalise/index.md): Normalise a JSON column into typed columns, a struct column or JSON strings - [JSON in Parquet](https://polars-genson.vercel.app/guides/parquet/index.md): Normalise a JSON string column in a Parquet file straight to typed Parquet output - [Factor out repeated data](https://polars-genson.vercel.app/guides/extract-invariants/index.md): Move data repeated per key (embedded copies of referenced records) into a lookup table - [Remove malformed records](https://polars-genson.vercel.app/guides/prune/index.md): Remove records holding named fields (malformed entries) and keep them in a separate file - [Large inputs](https://polars-genson.vercel.app/guides/large-inputs/index.md): Speed and memory for large inputs ## How it works - [Type mapping](https://polars-genson.vercel.app/concepts/type-mapping/index.md): Which Polars dtype each kind of JSON value becomes - [Nulls and empty values](https://polars-genson.vercel.app/concepts/nulls-and-empty-values/index.md): Missing keys, null values, empty arrays and objects, null rows - [Maps and records](https://polars-genson.vercel.app/concepts/maps-and-records/index.md): When an object becomes a struct or a list of key/value structs - [Mixed types](https://polars-genson.vercel.app/concepts/mixed-types/index.md): What happens when one field holds different kinds of value - [Field order](https://polars-genson.vercel.app/concepts/key-order/index.md): How fields are ordered, and combining output from several inputs - [How inference works](https://polars-genson.vercel.app/concepts/inference/index.md): How genson builds one schema from the rows, then rewrites it into maps and records ## Reference - [API](https://polars-genson.vercel.app/api/polars_genson/index.md): Every public function and DataFrame method - [Options](https://polars-genson.vercel.app/reference/options/index.md): Every option with its default and the functions that accept it - [Changelog](https://polars-genson.vercel.app/changelog/index.md): Release notes