我需要使用 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<SimpleNode> testNodes = repository.getElements(0);
Gson gson = new Gson();
String jsonNodesAsString = gson.toJson(testNodes);
它可以工作,但是 JSON 对象的字段名称是小驼峰命名法。像这样:
[
{
"imageIndex": "1",
"text": "Text 1"
},
{
"imageIndex": "2",
"text": "Text 2"
}
]
如何获取具有大驼峰式字段名称的 JSON,如下所示:
[
{
"ImageIndex": "1",
"Text": "Text 1"
},
{
"ImageIndex": "2",
"Text": "Text 2"
}
]
我认为我可以将成员变量重命名为UpperCamelCase,但可能还有另一种方法吗?
摘自文档:
Gson 支持一些预定义的字段命名策略,将标准 Java 字段名称(即以小写开头的驼峰式名称 ---“sampleFieldNameInJava”)转换为 JSON 字段名称(即
sample_field_name_in_java
或 SampleFieldNameInJava
)。有关预定义命名策略的信息,请参阅 FieldNamingPolicy
类。
@SerializedName
注释在每个字段的基础上定义自定义名称。请注意,基于注释的策略具有字段名称验证,如果提供无效的字段名称作为注释值,则会引发“运行时”异常。
以下是如何使用 Gson 命名策略功能的示例:
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
政策,您将实现您的目标。