gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:51:48 24 4
gpt4 key购买 nike

我需要使用 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 对象的字段名称是 lowerCamelCase。像这样:

[
{
"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 类。

它还有一个基于注释的策略,允许客户在每个字段的基础上定义自定义名称。请注意,基于注释的策略具有字段名称验证,如果提供无效字段名称作为注释值,则会引发“运行时”异常。

以下是如何使用这两个 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 选项,您将实现目标。

关于java - 对象序列化为 JSON(使用 Gson)。如何在 UpperCamelCase 中设置字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com