#pragma once #include #include #include namespace NYql { class TStructuredToken { public: explicit TStructuredToken(TMap&& data = {}); TStructuredToken(TStructuredToken&&) = default; TStructuredToken(const TStructuredToken&) = default; TString GetField(const TString& name) const; TString GetFieldOrDefault(const TString& name, const TString& defaultValue) const; TMaybe FindField(const TString& name) const; bool HasField(const TString& name) const; TStructuredToken& SetField(const TString& name, const TString& value); TStructuredToken& ClearField(const TString& name); TString ToJson() const; private: TMap Data; }; // is used for backward compatibility when content contains just token bool IsStructuredTokenJson(const TString& content); TStructuredToken ParseStructuredToken(const TString& content); } // namespace NYql