对象序列化为JSON(使用Gson)。 如何在UpperCamelCase中设置字段名称?

我需要使用Google Gson库将简单Java对象列表序列化为JSON。

物体:

public class SimpleNode { private String imageIndex; private String text; public String getImageIndex() { return imageIndex; } public void setImageIndex(String imageIndex) { this.imageIndex = imageIndex; } public String getText() { return text; } public void setText(String text) { this.text = text; } } 

我已经为序列化编写了以下代码:

  List testNodes = repository.getElements(0); Gson gson = new Gson(); String jsonNodesAsString = gson.toJson(testNodes); 

它可以工作,但JSON对象的字段名是lowerCamelCase。 喜欢这个:

 [ { "imageIndex": "1", "text": "Text 1" }, { "imageIndex": "2", "text": "Text 2" } ] 

如何使用UpperCamelCase字段名称获取JSON,如下所示:

 [ { "ImageIndex": "1", "Text": "Text 1" }, { "ImageIndex": "2", "Text": "Text 2" } ] 

我认为我可以将成员变量重命名为UpperCamelCase,但可能还有另一种方法吗?

摘自文档:

Gson支持一些预定义的字段命名策略,以将标准Java字段名称(即以小写字母开头的驼峰名称—“sampleFieldNameInJava”)转换为Json字段名称(即sample_field_name_in_java或SampleFieldNameInJava)。 有关预定义命名策略的信息,请参阅FieldNamingPolicy类。

它还具有基于注释的策略,允许客户端基于每个字段定义自定义名称。 请注意,基于注释的策略具有字段名称validation,如果提供了无效的字段名称作为注释值,则会引发“运行时”exception。

以下是如何使用两个Gson命名策略function的示例:

 private class SomeObject { @SerializedName("custom_naming") private final String someField; private final String someOtherField; public SomeObject(String a, String b) { this.someField = a; this.someOtherField = b; } } SomeObject someObject = new SomeObject("first", "second"); Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create(); String jsonRepresentation = gson.toJson(someObject); System.out.println(jsonRepresentation); 

========输出========

 {"custom_naming":"first","SomeOtherField":"second"} 

但是,对于你想要的,你可以使用这个:

 Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create(); 

通过使用UPPER_CAMEL_CASE选项,您将实现目标。