最近我一直在玩一个网络服务,它返回一个像这样的 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 和其他框架。 ¿这个问题的答案是否依赖于框架?更具体地说,考虑到 future ,我愿意遵守 json-schema 规范
最佳答案
如果使用 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")));
关于java - 当一些变量名以数字开头时,如何将 Json 映射到 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17610295/