| 342 | } |
| 343 | |
| 344 | void SerializationMap::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const |
| 345 | { |
| 346 | if (settings.json.write_map_as_array_of_tuples) |
| 347 | { |
| 348 | nested_serialization->serializeTextJSON(extractNestedColumn(column), row_num, ostr, settings); |
| 349 | return; |
| 350 | } |
| 351 | |
| 352 | serializeTextImpl(column, row_num, ostr, |
| 353 | [&settings](WriteBuffer & buf, const SerializationPtr & subcolumn_serialization, const IColumn & subcolumn, size_t pos) |
| 354 | { |
| 355 | /// We need to double-quote all keys (including integers) to produce valid JSON. |
| 356 | WriteBufferFromOwnString str_buf; |
| 357 | subcolumn_serialization->serializeText(subcolumn, pos, str_buf, settings); |
| 358 | writeJSONString(str_buf.str(), buf, settings); |
| 359 | }, |
| 360 | [&settings](WriteBuffer & buf, const SerializationPtr & subcolumn_serialization, const IColumn & subcolumn, size_t pos) |
| 361 | { |
| 362 | subcolumn_serialization->serializeTextJSON(subcolumn, pos, buf, settings); |
| 363 | }); |
| 364 | } |
| 365 | |
| 366 | void SerializationMap::serializeTextJSONPretty(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings, size_t indent) const |
| 367 | { |