背景:我使用fastjson生成elasticsearch客户端请求的json字符串。ES的json有一个奇怪的特性:使用动态的文档字段名称作为json key,同时,有些字段有是相对固定的。
静态key字段:直接声明相应类型的成员对象引用; (静态字段的json序列化依赖于成员对象的声明类型(基类类型),而不是实际类型(子类类型)) 动态key字段:extends HashMap<String, Object> (动态字段的value序列化依据的是value的实际类型)
import lombok.Getter; @Getter class ESXxxOptions extends HashMap<String, Object> { ESYyyOptions yyy = ...; }
然而,当我尝试这么做的时候,只有动态key生效。