在Java中创建嵌套的Json

时间:2018-03-23 13:32:54

标签: java json api nested

我试图让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}

我应该为获得预期的输出做出什么样的代码更改。

2 个答案:

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