gpt4 book ai didi

java - 将 Java Thrift 对象序列化为 JSON,同时保留枚举名称

转载 作者:行者123 更新时间:2023-12-02 09:31:07 28 4
gpt4 key购买 nike

我的java项目使用Apache Thrift框架,它具有类似的Thrift对象结构,如下所示:

struct MyStruct {
1: required string something;
2: optional OptionEnum option;
}
enum OptionEnum {
VALUE_A = 0,
VALUE_B = 1
}

因此,当我的项目编译时,它会为此结构构建一个 Java 类(即:类 MyStruct)。

我想做的是将其序列化为字符串 Json。

我尝试过使用 TSerializer:

TSerializer serializer = new TSerializer(new TSimpleJSONProtocol.Factory());
return serializer.toString(instanceOfMyStruct);

这会生成一个 json 但会丢失枚举的字符串名称(它会转换为数值):

{
something: 'value',
option: 1
}

有没有办法保留枚举名称(我的意思是上面示例中的选项是 VALUE_B 而不是 1)?

最佳答案

这里的问题是转换被烘焙到 Thrift 编译器生成的代码部分中。 protocol level类只了解一些非常基本的数据类型 - 当数据达到该级别时已经为时已晚。

所以,除非你想 fork 并实现你自己的(不兼容的)版本的代码生成器,否则恐怕没有办法。

PS:我可能会补充一点,插入设计的主要目的是效率,而不是人类可读性。

关于java - 将 Java Thrift 对象序列化为 JSON,同时保留枚举名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964138/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com