【问题标题】:Jackson Jersey JSON杰克逊球衣 JSON
【发布时间】:2014-02-12 22:39:45
【问题描述】:

我正在尝试使用 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("授权", getToken()).get(WDCOResponse.class);

但是还是不行。

编辑2: 想通了!谢谢大家。 :)

我必须添加注释来告诉它在没有找到某些东西时忽略,我返回的一些 JSON 没有完全形成,因为并非所有字段都是绝对必要的。

【问题讨论】:

标签: java json jersey jackson


【解决方案1】:

你会像这样使用 POJO:

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

并从那里访问数据:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 所以我实际上是在尝试格式化来自另一个 API 的 JSON 信息。我现在正在构建一个客户端 API。我正在做你所拥有的,但它不起作用,我只是跳出来。我假设有一个异常,所以我将通过添加一个将打印出来的异常捕获器来查看这个。
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多