Java 对象序列化为JSON(使用Gson)。如何设置大写字段名?
我需要使用GoogleGSON库将简单Java对象列表序列化为JSON 对象:Java 对象序列化为JSON(使用Gson)。如何设置大写字段名?,java,json,serialization,gson,Java,Json,Serialization,Gson,我需要使用GoogleGSON库将简单Java对象列表序列化为JSON 对象: public class SimpleNode { private String imageIndex; private String text; public String getImageIndex() { return imageIndex; } public void setImageIndex(String imageIndex) {
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"
}
]
我想我可以将中的成员变量重命名为大写,但可能还有另一种方法?摘自文档:
Gson支持一些预定义的字段命名策略,以将标准Java字段名(即以小写字母--“sampleFieldNameInJava”开头的驼峰大小写名称)转换为Json字段名(即Java或sampleFieldNameInJava中的sample_field_name_)。有关预定义命名策略的信息,请参见FieldNamingPolicy类
它还有一个基于注释的策略,允许客户机在每个字段的基础上定义自定义名称。请注意,基于注释的策略具有字段名验证,如果提供无效字段名作为注释值,则会引发“运行时”异常
以下是如何使用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();
通过使用大写字母CAMEL字母CASE选项,您将实现您的目标
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();