如何在Spring Rest Request中访问内部json对象



我想创建一个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
} 

最新更新