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

时间:2018-07-17 14:30:16

标签: java spring rest spring-mvc

我想创建一个API,其格式如下所示。

keys = ['NAME1', 'NAME2', ...]
df = pd.DataFrame.from_dict({key: <whatever> for key in keys})
df = df.style.applymap(lambda val: val['color'])
df = df.format({key: lambda val: val['value'] for key in keyes})

为此,我创建了如下的RequestBody类。

{
           "jsonObject": {
                     //some json object     
           },
           "key": "SampleKey",
           "jsonDataKey": "SampleDataKey"
}

}

但是不幸的是,我没有在类的json对象内获取任何数据。我做错了什么。请指导我如何访问该对象内的数据。

这是控制器方法代码。

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;

2 个答案:

答案 0 :(得分:2)

您遇到的问题是,您试图对来自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;
    }
}

JsonObject:

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);
    }
}

答案 1 :(得分:0)

u可以这样修改

public Greeting greeting(@RequestBody String parentJsonInfo) {
 // parse string to jsonobject
}