我试图让Json在其余api的Json响应中。
httpsConn.getInputStream()将是一个像Json一样的
"数据":[ {" ID":" 1""名称:" AAA""得分":" 90&#34 ;},{" ID":" 2""名称":" BBB""得分":& #34; 85"} ]
Jave代码:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
response = (MarkResponse)objectMapper.readValue(httpsConn.getInputStream(), MarkResponse.class);
Pojo课程:
public class MarkResponse {
private int count;
private List<MarkData> markData;
//setter and getter.
}
public class MarkData {
private String id;
private String name;
}
响应如下,因为我在主要的pojo中使用了List。
{&#34;标题&#34;:{},&#34;正文&#34;:&#34; MarkResponse [count = 2 markData = [MarkData [id = 1, 名称= aaa],MarkData [ID = 2,名称= BBB]] ],&#34;的StatusCode&#34;:&#34; ACCEPTED&#34;&#34; statusCodeValue&#34;:202} < / p>
我期待的是,
{&#34;标题&#34;:{},&#34;正文&#34;:&#34; MarkResponse [count = 2 markData = {&#34; ID&#34;:&#34; 1&#34;&#34;名称:&#34; AAA&#34;},{&#34; ID&# 34;:&#34; 2&#34;&#34;名称&#34;:&#34; BBB&#34;} ],&#34;的StatusCode&#34;:& #34; ACCEPTED&#34;&#34; statusCodeValue&#34;:202}
我应该为获得预期的输出做出什么样的代码更改。
答案 0 :(得分:0)
我认为问题是private
字段。当我创建字段public
时,杰克逊工作,我不需要objectMapper.disable(任何);当字段是私有的,受保护的或包私有的时,它们被读取但不被写入。
也就是说,假设您尝试使用org.codehaus.jackson.map.ObjectMapper
(是的,不是最新版本)而不是定义名为ObjectMapper的类的其他内容。
答案 1 :(得分:0)
更改返回类型后,此方法有效。
我之前的回答是,
public ResponseEntity<String> fnCall() {
//code here
return new ResponseEntity<String>(MarkResponse.toString(), HttpStatus.ACCEPTED);
}
我改变了这个以使其发挥作用。
public MarkResponse fnCall() {
//code here
return response;
}