pub struct JsonReader<'a, R>where
R: MmapBytesReader,{ /* private fields */ }
polars-io
only.Expand description
Reads JSON in one of the formats in JsonFormat
into a DataFrame.
Implementations§
Source§impl<'a, R> JsonReader<'a, R>where
R: MmapBytesReader,
impl<'a, R> JsonReader<'a, R>where
R: MmapBytesReader,
Sourcepub fn with_schema(self, schema: Arc<Schema<DataType>>) -> JsonReader<'a, R>
pub fn with_schema(self, schema: Arc<Schema<DataType>>) -> JsonReader<'a, R>
Set the JSON file’s schema
Sourcepub fn with_schema_overwrite(
self,
schema: &'a Schema<DataType>,
) -> JsonReader<'a, R>
pub fn with_schema_overwrite( self, schema: &'a Schema<DataType>, ) -> JsonReader<'a, R>
Overwrite parts of the inferred schema.
Sourcepub fn infer_schema_len(
self,
max_records: Option<NonZero<usize>>,
) -> JsonReader<'a, R>
pub fn infer_schema_len( self, max_records: Option<NonZero<usize>>, ) -> JsonReader<'a, R>
Set the JSON reader to infer the schema of the file. Currently, this is only used when reading from
JsonFormat::JsonLines
, as JsonFormat::Json
reads in the entire array anyway.
When using JsonFormat::JsonLines
, max_records = None
will read the entire buffer in order to infer the
schema, Some(1)
would look only at the first record, Some(2)
the first two records, etc.
It is an error to pass max_records = Some(0)
, as a schema cannot be inferred from 0 records when deserializing
from JSON (unlike CSVs, there is no header row to inspect for column names).
Sourcepub fn with_batch_size(self, batch_size: NonZero<usize>) -> JsonReader<'a, R>
pub fn with_batch_size(self, batch_size: NonZero<usize>) -> JsonReader<'a, R>
Set the batch size (number of records to load at one time)
This heavily influences loading time.
Sourcepub fn with_projection(
self,
projection: Option<Vec<PlSmallStr>>,
) -> JsonReader<'a, R>
pub fn with_projection( self, projection: Option<Vec<PlSmallStr>>, ) -> JsonReader<'a, R>
Set the reader’s column projection: the names of the columns to keep after deserialization. If None
, all
columns are kept.
Setting projection
to the columns you want to keep is more efficient than deserializing all of the columns and
then dropping the ones you don’t want.
pub fn with_json_format(self, format: JsonFormat) -> JsonReader<'a, R>
Sourcepub fn with_ignore_errors(self, ignore: bool) -> JsonReader<'a, R>
pub fn with_ignore_errors(self, ignore: bool) -> JsonReader<'a, R>
Return a null
if an error occurs during parsing.
Trait Implementations§
Source§impl<R> SerReader<R> for JsonReader<'_, R>where
R: MmapBytesReader,
impl<R> SerReader<R> for JsonReader<'_, R>where
R: MmapBytesReader,
Source§fn finish(self) -> Result<DataFrame, PolarsError>
fn finish(self) -> Result<DataFrame, PolarsError>
Take the SerReader and return a parsed DataFrame.
Because JSON values specify their types (number, string, etc), no upcasting or conversion is performed between
incompatible types in the input. In the event that a column contains mixed dtypes, is it unspecified whether an
error is returned or whether elements of incompatible dtypes are replaced with null
.
Source§fn new(reader: R) -> JsonReader<'_, R>
fn new(reader: R) -> JsonReader<'_, R>
SerReader
Source§fn set_rechunk(self, rechunk: bool) -> JsonReader<'_, R>
fn set_rechunk(self, rechunk: bool) -> JsonReader<'_, R>
Auto Trait Implementations§
impl<'a, R> Freeze for JsonReader<'a, R>where
R: Freeze,
impl<'a, R> !RefUnwindSafe for JsonReader<'a, R>
impl<'a, R> Send for JsonReader<'a, R>
impl<'a, R> Sync for JsonReader<'a, R>
impl<'a, R> Unpin for JsonReader<'a, R>where
R: Unpin,
impl<'a, R> !UnwindSafe for JsonReader<'a, R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more