当某些变量名以数字开头时,如何将Json映射到Java类?

玛格玛

最近,我一直在玩一个返回这样的json对象的网络服务

{
  "id": 88319,
  "dt": 1345284000,
  "name": "Benghazi",
  "coord": {
    "lat": 32.12,
    "lon": 20.07
  },
  "main": {
    "temp": 306.15,
    "pressure": 1013,
    "humidity": 44
  },
  "wind": {
    "speed": 1,
    "deg": -7
  },
  "clouds": {
    "all": 90
  },
  "rain": {
    "3h": 3
  }
}

我已经自动生成了映射到该json数据的Java类。问题是我无法生成具有名为3h的属性的Java类(在Java中,就像在许多其他语言中一样,变量标识符不能以数字开头)。作为破解,我将3h属性重新定义h3,每当我收到来自Web服务的json响应时,我就将字符串“ 3h”替换为“ h3”。

但是,该方法仅适用于小型项目。我想知道是否有更方便的方法来处理这种情况。

注意:对于此特定示例,我使用了一个在线工具,该工具在给定json示例的情况下生成了Java类。在其他情况下,我使用了Jackson和其他框架。¿这个问题框架的答案是依赖的吗?更具体地说,考虑到未来,我想遵守json-schema规范

拉维(Ravi K Thapliyal)

如果使用Gson,则可以使用@SerializedName批注来实现。

Java类:

public class JsonData {

    @SerializedName("3h")
    private int h3;

    private String name;

    public JsonData(int h3, String name) {
        this.h3 = h3;
        this.name = name;
    }

}

序列化:(同样的类也适用于fromJson()

// prints: {"3h": 3,"name": "Benghazi"}
System.out.println(new Gson().toJson(new JsonData(3, "Benghazi")));

参考:
@SerializedName注释

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章