gpt4 book ai didi

java - GSON - 反序列化不区分大小写的字段名称(无明确大小写模式)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:58 25 4
gpt4 key购买 nike

我想构建一个灵活的 api,我没有用户可以通过的明确的大小写敏感性,因此 GSON 必须能够在区分大小写的情况下反序列化它。

{"firstName":"Juan"}
{"firstname":"Juan"}
{"Firstname":"Juan"}
...

如何将这些字段反序列化为我的 Foo 的名字?

public class Foo {
private String firstName;
//..getters
}

我尝试使用 FieldNamingPolicy,但没有用。

new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.create();

最佳答案

有一种更简单的方法几乎可以得到您想要的东西。我没有意识到,但自从 GSON 2.4 以来,SerializedName 注释支持 GSON 可以从中反序列化的备用名称数组。

public class Foo {
@SerializedName(value = "firstName", alternate = {"firstname", "Firstname"})
private String firstName;

public java.lang.String getFirstName() {
return firstName;
}

@Override
public String toString() {
return "Foo:" + firstName;
}
}

您可以使用它来支持可能的变体,而无需处理诸如“firSTNAme”之类的东西。

https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html

它看起来不像 GSON 有一个简单的内置方式来按照你想要的方式定制它。从技术上看,您似乎可以实现一个使用反射来执行此操作的 TypeAdapterFactory,但它似乎过分了。

您可能会向 GSON 提出一个功能请求,要求引入对支持替代名称或模式或不区分大小写匹配的字段命名策略的支持。

关于java - GSON - 反序列化不区分大小写的字段名称(无明确大小写模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36081359/

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