【问题标题】:How to access internal json object in Spring Rest Request如何在 Spring Rest Request 中访问内部 json 对象
【发布时间】:2018-07-17 14:30:16
【问题描述】:

我想创建一个格式如下所示的 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 对象中获取任何数据。我做错了什么。请指导我如何访问该对象内的数据。

这是控制器方法代码。

@RequestMapping(value = "/postNews", method = RequestMethod.POST)
public Greeting greeting(@RequestBody ParentJsonInfo parentJsonInfo) {
 Jsonobject jsonObject= parentJsonInfo.getjsonObject();
}

【问题讨论】:

  • 显示更多代码。尤其是控制器,因此我们可以帮助您解决问题。
  • 也添加了控制器方法
  • json 字符串中使用的键是 jsonObject,但您在模型中将其声明为 jsonData。将其重命名为 jsonObject。

标签: java spring rest spring-mvc


【解决方案1】:

您遇到的问题是您试图反序列化来自您的 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);
    }
}

【讨论】:

  • 做了这个改变,但它仍然没有工作.. json 对象是空的
  • @AndroidDev "jsonObject": { //some json object },。那么我们需要更多信息:) json 和 pojo 来帮助你
  • 一些 json 对象意味着您可以在这里考虑任何具有任何属性的 json 对象
  • @AndroidDev 我已经用一个可能的解决方案更新了我的答案,以从 json 获取数据。我不完全确定JsonObject 是什么。它是您自己的对象还是来自图书馆的东西?
【解决方案2】:

你可以这样修改

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

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2021-12-08
    • 2023-02-20
    • 1970-01-01
    • 2016-09-23
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多