最近,我一直在玩一个返回这样的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规范
如果使用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")));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句