File indexing completed on 2025-08-28 08:26:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #pragma once
0019
0020 #include <stdexcept>
0021 #include <string>
0022
0023 #include "arrow/extension_type.h"
0024 #include "arrow/result.h"
0025 #include "arrow/type_fwd.h"
0026 #include "arrow/util/visibility.h"
0027
0028 namespace arrow::extension {
0029
0030
0031 class ARROW_EXPORT JsonExtensionType : public ExtensionType {
0032 public:
0033 explicit JsonExtensionType(const std::shared_ptr<DataType>& storage_type)
0034 : ExtensionType(storage_type), storage_type_(storage_type) {}
0035
0036 std::string extension_name() const override { return "arrow.json"; }
0037
0038 bool ExtensionEquals(const ExtensionType& other) const override;
0039
0040 Result<std::shared_ptr<DataType>> Deserialize(
0041 std::shared_ptr<DataType> storage_type,
0042 const std::string& serialized_data) const override;
0043
0044 std::string Serialize() const override;
0045
0046 std::shared_ptr<Array> MakeArray(std::shared_ptr<ArrayData> data) const override;
0047
0048 static Result<std::shared_ptr<DataType>> Make(std::shared_ptr<DataType> storage_type);
0049
0050 static bool IsSupportedStorageType(Type::type type_id);
0051
0052 private:
0053 std::shared_ptr<DataType> storage_type_;
0054 };
0055
0056
0057 ARROW_EXPORT std::shared_ptr<DataType> json(
0058 std::shared_ptr<DataType> storage_type = utf8());
0059
0060 }