Json Halarious-未使用自定义命名策略转换嵌入式资源字段名称

Json Halarious-未使用自定义命名策略转换嵌入式资源字段名称,json,rest,hateoas,json-serialization,Json,Rest,Hateoas,Json Serialization,我正在使用HAL规范框架: 使用自定义命名策略时,嵌入的资源字段名称似乎没有正确转换。仅转换“非HAL”字段 问题:有没有办法确保自定义命名约定应用于嵌入式资源而不仅仅是常规字段? 我在自定义MessageBodyWriter中有以下Gson配置 GsonBuilder builder = new GsonBuilder(); builder.setFieldNamingStrategy(new AllLowercaseFieldNamingStrategy()); builder.reg

我正在使用HAL规范框架:

使用自定义命名策略时,嵌入的资源字段名称似乎没有正确转换。仅转换“非HAL”字段

问题:有没有办法确保自定义命名约定应用于嵌入式资源而不仅仅是常规字段?

我在自定义MessageBodyWriter中有以下Gson配置

GsonBuilder builder = new GsonBuilder();
builder.setFieldNamingStrategy(new AllLowercaseFieldNamingStrategy());
builder.registerTypeAdapter(HalResource.class, new HalSerializer()); 
builder.setExclusionStrategies(new HalExclusionStrategy());
Gson gson = builder.create();
try (OutputStreamWriter writer = new OutputStreamWriter(entityStream)) {
    writer.write(gson.toJson(resource, HalResource.class));
}
AllLowercaseFieldNamingStrategy
实现只是将字段名转换为小写,就像这样
@Override public String translateName(字段f){return f.getName().toLowerCase();}

例如:

public class MyResource implements HalResource {
   private final String myField;
   private final MyResource myEmbeddedResource;
   ...
}
导致字段名称不一致(根据命名策略,应全部小写)


我的解决方案是使用
@HalEmbedded
注释并直接分配一个小写名称

public class MyResource implements HalResource {
   private final String myField;
   @HalEmbedded(name = "myembeddedresource")
   private final MyResource myEmbeddedResource;
   ...
}
已为项目创建一个问题:

public class MyResource implements HalResource {
   private final String myField;
   @HalEmbedded(name = "myembeddedresource")
   private final MyResource myEmbeddedResource;
   ...
}