To `JSONEachRow`
read_columns.assign(num_columns, false);
    seen_columns.assign(num_columns, false);
    nested_prefix_length = 0;
    readJSONObject(columns);
    const auto & header = getPort().getHeader();
    
    for (size_t i = 0; i < num_columns; ++i)
        if (!seen_columns[i])
            header.getByPosition(i).type->insertDefaultInto(*columns[i]);
    
    
    if (format_settings.defaults_for_omitted_fields)
        ext.read_columns = read_columns;
    else
        ext.read_columns.assign(read_columns.size(), true);
    return true;
}
void JSONEachRowRowInputFormat::syncAfterError()
{
    skipToUnescapedNextLineOrEOF(*in);
}
void JSONEachRowRowInputFormat::resetParser()
{
    IRowInputFormat::resetParser();
    nested_prefix_length = 0;
    read_columns.clear();
    seen_columns.clear();
    prev_positions.clear();
}
void JSONEachRowRowInputFormat::readPrefix()