当我上课休息时,我收到了以下回复。
响应:
{
"_index": "a_index",
"total":9,
"_type": "e",
"_id": "BSKnamtd_8-egMNvh",
"_data": 2.076404564,
"_secure": {
"email": "abcd1@gmail.com"
}
}
设置此响应。我已经创建了pojo类,如图所示。
public class data implements Serializable {
private static final long serialVersionUID = 644188100766481108L;
private String _index;
private Integer total;
private String _type;
private String _id;
private Double _data;
private Source _secure;
public String getIndex() {
return _index;
}
public void setIndex(String _index) {
this._index = _index;
}
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public String getType() {
return _type;
}
public void setType(String _type) {
this._type = _type;
}
public String getId() {
return _id;
}
public void setId(String _id) {
this._id = _id;
}
public Double getData() {
return _data;
}
public void setData(Double _data) {
this._data = _data;
}
public Source getSecure() {
return _secure;
}
public void setSecure(Source _secure) {
this._secure = _secure;
}
}
当我点击restClient调用时,我只获得“total”值剩余值为null。没有下划线(“”)剩余变量的“total”变量有“”,所以我面临问题..?
请帮助解决此问题。
答案 0 :(得分:0)
Json对象是
...
"_index": "a_index",
"total":9,
...
这两个属性的属性是:
public void setIndex(String _index) {
this._index = _index;
}
public void setTotal(Integer total) {
this.total = total;
}
如您所见, Json _index属性的 java属性是 index(setIndex)。
索引与 _index 不同,因此当映射Json对象时,它会变为null,因为它无法找到属性_index。
另一方面, Json总属性的 java属性为 total(setTotal)。
在这种情况下,Json和Java中的属性具有相同的名称,因此它会加载值。
答案 1 :(得分:0)
Java类属性名对于对象映射器是不可见的(它是private
)。在您的情况下重要的是getter / setter名称。它用于将JSON对象属性名称映射到Java类(POJO)。
你有两个我能想到的选择。脏的只是将setter名称更改为set_index ()
,set_type()
等,以便它们对应于JSON属性名称,或者您可以正确执行:
@JsonProperty
注释属性以表示JSON和Java对象之间的默认映射。从注释类型JsonProperty Java docs:
默认值("")表示字段名称用作 属性名称没有任何修改,但可以指定 非空值指定不同的名称。属性名称是指 外部使用的名称,作为JSON对象中的字段名称。
带注释的示例:
public class test {
@JsonProperty("_index")
private String index;
private Integer total;
@JsonProperty("_type")
private String type;
public String getIndex() { return index; }
public void setIndex(String index){ this.index = index; }
public Integer getTotal() { ... }
public void setTotal(Integer total) { ... }
public String getType() { ... }
public void setType(String type) { ... }
....
}