繁体   English   中英

杰克逊·泽西(Jackson Jersey)JSON

[英]Jackson Jersey JSON

我正在尝试使用Jersey和Jackson(尽管可以通过其他任何方式进行JSON解组工作)以某种形式(无论是POJO还是其他表示形式)将其输入我的系统。

基本上我只需要数据部分。 我试图将GenericTypes与列表一起使用,但这是一个嵌套列表,我不确定该怎么做。 很多帮助的荣誉,我真的很感激!

{
    "total": 4,
    "data": [
        {
            "descriptor": "",
            "multiInstance": false,
            "active": false
        },
        {
            "descriptor": "Apparel",
            "multiInstance": true,
        },
        {
            "descriptor": "abcd123",
            "multiInstance": false,

        },
        {
            "descriptor": "abcd",
            "multiInstance": false,
        }
    ]
}

这是我要使用的课程。 我需要一个班级清单。

public class customObject {

@JsonProperty(value = "descriptor")
private String descriptor;
@JsonProperty(value = "multiInstance")
private Boolean multiInstance;

//getters and setters
}

编辑:

我在这里用它。

CustomObjectResponse WDCOResponse =资源.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).header(“ Authorization”,getToken())。get(WDCOResponse.class);

但是它仍然无法正常工作。

Edit2:想通了! 谢谢大家。 :)

我必须添加注释来告诉它忽略是否未找到内容,我返回的某些JSON格式不完全,因为并非所有字段都是绝对必要的。

如果您提供的对象是传递给控制器​​的对象,那么您将需要另一个包装对象来包含如下列表:

public class CustomRequest {

    @JSonProperty(value = "total");
    private Integer total;

    @JsonProperty(value = "data")
    private List<CustomObject> data;

    // getters/setters

}


public class CustomObject {

    @JsonProperty(value = "descriptor")
    private String descriptor;

    @JsonProperty(value = "multiInstance")
    private Boolean multiInstance;

    // getters/setters
}

然后,您的控制器将只具有显示RequestBody为CustomRequest类的注释:

@Controller
public class JSONController {

    @RequestMapping(value="sendData")
        public @ResponseBody CustomResponse sendData(
            @RequestBody CustomRequest request)
    {
    return null;
    }

}

如果您仍然遇到错误,请提供详细的错误或问题。 谢谢!

您可以像这样使用POJO:

public class Response {
  int count;
  List<customObject> data;
}

并从那里访问数据:

for (customObject ob : response.data) {
   // process ig
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM