如何定义一个地图接受 Thrift 中不同类型的值?

2023-12-10

我用 thrift 定义了一个结构:

struct QuerySetRecord {
    1:string recordId,
    2:string crawlerName,
    3:string recordType,
    4:map<string,string> dataMap,
    5:i16 priority,
}

问题是dataMap,我不仅要接受string值,我可能还是想接受List or Map, 例如map<string, list<string>> dataMap。换句话说,我想要一个像 root 这样的类型Object在爪哇语中,object在Python中

我可以这样做吗?


你必须创建自己的Object并列出其中所有可能的类。

union Object {
   1: string str;
   2: i32 number32;
}

(因为我不确定联合实现如何在所有语言中工作,所以我会使用所有字段可选的结构)

struct Object {
   1: optional string str;
   2: optional i32 number32;
}

进而:map<string, Object>

在 Thrift 中,您无法创建“接受所有”字段,因为它无法完全跨语言移植,而这是 Thrift 的关键功能之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何定义一个地图接受 Thrift 中不同类型的值? 的相关文章

随机推荐

  • JQuery-Mobile 页面转换 - 闪烁(单独页面)

    我花了一天时间研究如何修复 JQuery Mobile 1 3 1 中页面转换之间的闪烁问题 我找到 ui page webkit backface visibility hidden 或设置data transition to none
  • 如何在 WPF 应用程序中托管 Flash 内容并使用透明度?

    如何在 WPF 表单内托管 Flash 内容并在 WPF 窗口上仍然使用透明度 Alpha 托管 WinForms flash 控件不允许这样做 除非用于显示 Flash 内容的控件是在 WPF 中内置的 否则您将遇到这些 空域 问题 从
  • 将 Base64 解码的字符串转换为 unsigned char[32]

    我在用着ed25519 唐娜进行数字签名 关键是unsigned char 32 签名是unsigned char 64 我找到了这个base64编码 但它只能解码为string 我发现并尝试了很多技术 但仍然不确定如何转换 Base64如
  • 列表理解是通过map和lambda函数实现的吗? [复制]

    这个问题在这里已经有答案了 根据列表理解文档 and 这个问题 squares x 2 for x in range 10 相当于squares list map lambda x x 2 range 10 但Python实际上是通过以下方
  • java泛型:无法创建简单的打印数组方法

    所以我在下一个代码中不断收到错误 我不知道我做错了什么 错误是 Main 类型中的方法 printArray T 不适用于参数 int public class main public static void main String arg
  • 静态字段可以继承吗?

    当继承静态成员时 它们对于整个层次结构还是仅该类是静态的 即 class SomeClass public SomeClass total static int total class SomeDerivedClass public Som
  • 同一页面上有两个不同的 jQuery UI 主题

    我想在同一页面上有两个不同的 jQuery UI 手风琴菜单 但我希望它们有不同的主题 这可能吗 绝对地 jQuery UI CSS 框架拥有强大且完整的主题解决方案 只需为您的手风琴提供单独的 CSS 类 jQuery UI 类本质上是语
  • 如何指导让经典的 asp 应用程序在 IIS 7.0 下工作

    我正在寻找一个很好的 简单的分步 操作方法 指南 以让经典的 asp 应用程序在 IIS 7 0 下工作 如果有什么区别的话 它是在 64 位 Windows Server 2008 计算机上 我们已经将一些经典 ASP 代码移至 64 位
  • 编辑列表列表中的字符串

    我从文本块中创建了一个列表列表 其中每个列表包含一行中的所有单词作为单独的元素 如下所示 listoflists Lorem ipsum dolor sit amet n consectetur adipiscing elit donec
  • 如何在docker容器运行时自动启动服务?

    我有一个Dockerfile在容器中安装 MySQL 服务器 然后我像这样启动 sudo docker run t i 09d18b9a12be bin bash 但是 MySQL 服务不会自动启动 我必须手动运行 从容器内 service
  • Swift 告诉我的 _: 是什么?

    函数定义中单独的下划线是什么意思 e g map 我知道在定义函数时我可以这样做 func myFunc string String 那么我可以将其称为myFunc 代替myFunc string 即故意隐藏参数名称 The 用于定义参数未
  • 脚本可以在 powershell 中运行,但不能在 c# 中运行

    该脚本在 PowerShell ISE 中运行时有效 它设置给定用户的远程桌面服务配置文件Active Directory 中的设置 Get ADUser FirstName LastName ForEach Object User ADS
  • 如何获取 os.system() 的输出? [复制]

    这个问题在这里已经有答案了 我想得到输出os system nslookup google com 但我总是得到0 打印时 这是为什么 我该如何解决这个问题 Python 3 Mac 我在看如何在python中存储已打印到stdout的os
  • 使用 WPF + Windows Azure 存储二进制数据(图像、文件等)

    我有一个使用 Windows Azure 作为后端的 WPF 应用程序 我使用 SQL Azure 存储 WPF 应用程序通过 WCF 服务访问的数据 我需要能够在服务器端存储二进制文件 例如图像 并想知道存储这些文件的最佳方法是什么 我可
  • 添加与 GDK 的共享联系人

    我正在研究 Google Glass GDK 并且正在寻找是否可以从应用程序添加共享联系人 我在官方文件中没有看到任何对此的引用 我想知道你是否可以这样做 感谢您的帮助 目前先睹为快的GDK尚不支持添加共享联系人 如果您对此功能感兴趣 请在
  • 将意图保存在共享首选项中

    我有一个应用程序 我可以从中启动手机上安装的其他应用程序 长按我可以获得应用程序选择器 结果我收到一个意图数据 我如何保存它以便用户在关闭时返回我的应用程序有相同的快捷方式设置吗 我保存其他类似的东西 SharedPreferences s
  • 版本不匹配 global tsc 1.0.3.0 != VS Code 的语言服务 (2.2.1)

    I have this popup presented 我尝试通过在 cmd 中执行以下命令来安装正确的 tsc npm install g save dev email protected and npm install save dev
  • python pandas 带括号和不带括号的函数

    我注意到许多 DataFrame 函数如果不带括号使用似乎表现得像 属性 例如 In 200 df DataFrame np random randn 7 2 In 201 df head Out 201 0 1 0 1 325883 0
  • 有没有办法查看架构验证失败的位置?

    我正在尝试根据某种复杂的 模式 如空手道文档中定义 验证 json 我得到的错误并不那么明确 reason not equal 我如何检查它实际上在哪里验证失败 真的很抱歉 这都是我的错 我知道这对你没有帮助 但我现在正在重写空手道的核心
  • 如何定义一个地图接受 Thrift 中不同类型的值?

    我用 thrift 定义了一个结构 struct QuerySetRecord 1 string recordId 2 string crawlerName 3 string recordType 4 map