我想创建一个API,格式如下。
{
"jsonObject": {
//some json object
},
"key": "SampleKey",
"jsonDataKey": "SampleDataKey"
}
为此,我创建了RequestBody类,如下所示。
public class ParentJsonInfo {
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
private String key;
public JsonObject getJsonData() {
return jsonData;
}
public void setJsonData(JsonObject jsonData) {
this.jsonData = jsonData;
}
private JsonObject jsonData;
public String getJsonDataKey() {
return jsonDataKey;
}
public void setJsonDataKey(String jsonDataKey) {
this.jsonDataKey = jsonDataKey;
}
private String jsonDataKey;
}
但不幸的是,我在类的json对象中没有得到任何数据。M我做错了什么。请指导我如何访问该对象中的数据。
这是控制器方法代码。
@RequestMapping(value = "/postNews", method = RequestMethod.POST)
public Greeting greeting(@RequestBody ParentJsonInfo parentJsonInfo) {
Jsonobject jsonObject= parentJsonInfo.getjsonObject();
}
您遇到的问题是,您试图反序列化来自json的jsonObject
,但您的字段被称为jsonData
。正如@Mushtu所提到的,您需要重命名该字段。
这是您的ParentJsonInfo,有一些调整:
- 将字段移到顶部(将字段和方法分别分组是一种很好的做法(
- 将字段从
jsonData
重命名为jsonObject
ParentJsonInfo:
public class ParentJsonInfo {
private String key;
private JsonObject jsonObject;
private String jsonDataKey;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public JsonObject getJsonObject() {
return jsonObject;
}
public void setJsonObject(JsonObject jsonObject) {
this.jsonObject = jsonObject;
}
public String getJsonDataKey() {
return jsonDataKey;
}
public void setJsonDataKey(String jsonDataKey) {
this.jsonDataKey = jsonDataKey;
}
}
Json对象:
public class JsonObject {
private Map<String, Object> other = new HashMap<>();
@JsonAnyGetter
public Map<String, Object> getProperties() {
return other;
}
@JsonAnySetter
public void set(String name, String value) {
other.put(name, value);
}
}
u可以像这样修改
public Greeting greeting(@RequestBody String parentJsonInfo) {
// parse string to jsonobject
}