当前位置: 首页 > 知识库问答 >
问题:

对象序列化到JSON(使用Gson)。如何在大小写中设置字段名?

车靖琪
2023-03-14

我需要序列化一个简单的Java对象列表到JSON使用谷歌Gson库。

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);
[
  {
    "imageIndex": "1",
    "text": "Text 1"
  },
  {
    "imageIndex": "2",
    "text": "Text 2"
  }
]
[
  {
    "ImageIndex": "1",
    "Text": "Text 1"
  },
  {
    "ImageIndex": "2",
    "Text": "Text 2"
  }
]

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

共有1个答案

陶刚豪
2023-03-14

摘自文档:

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

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

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选项,您将实现您的目标。

 类似资料:
  • 问题内容: 我需要使用Google Gson库将简单Java对象列表序列化为JSON。 物体: 我编写了以下代码进行序列化: 它可以工作,但是JSON对象的字段名称是lowerCamelCase。像这样: 如何获取具有UpperCamelCase字段名称的JSON,如下所示: 我认为可以将成员变量重命名为UpperCamelCase,但是可能还有另一种方法吗? 问题答案: 来自文档: Gson支持

  • 问题内容: 我有以下JSON字符串: 我需要将值存储在单独的字符串中。 这是我到目前为止所拥有的,但这只是为我提供了整个JSON字符串,而不是特定的imgurl字段。 是JSON字符串。这是我的数据类: 问题答案: 解析这种简单的结构时,不需要专用的类。 解决方案1: 要使用gson从字符串中获取imgurURL,可以执行以下操作: 这使用原始解析到JsonObject中。 解决方案2: 另外,您

  • 这是我目前所拥有的,但这只给了我整个JSON字符串,而不是特定的imgurl字段。 是JSON字符串。下面是我的数据类:

  • 问题内容: 我想使用套接字(在开发远程PC时)从Android客户端向Java服务器发送2个对象。 当然我知道上面的方法是行不通的,因为它可以提供。因此,现在我想知道如何使用Gson库对对象进行序列化和反序列化。提前致谢。 问题答案: gson可以在任何平台上与Java一起使用-不仅限于Android。 使用gson序列化单个对象: 使用gson反序列化为单个对象。 从示例中可以看到,gson非常

  • 我使用下面的方法(来自spark-java framework的方法)从DB返回的数据如下: 从DB返回的数据: ClasStypeAdapterFactory: 类类型适配器: 这里我使用的是,它从spark-java ResponseTransformer接口实现了