繁体   English   中英

在Java中创建嵌套的Json

[英]creating nested Json in Java

我试图在其余api的Json响应中获取Json。

httpsConn.getInputStream()将是一个像Json

“ data”:[{“ id”:“ 1”,“名称:” aaa“,”得分“:” 90“},{” id“:” 2“,”名称“:” bbb“,”得分“ :“ 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。

{“ headers”:{},“ body”:“ MarkResponse [count = 2 markData = [MarkData [id = 1,name = aaa],MarkData [id = 2,name = bbb]] ],” statusCode“:” ACCEPTED“,” statusCodeValue“:202}

我期望的是

{“ headers”:{},“ body”:“ MarkResponse [count = 2 markData = {” id“:” 1“,”名称:“ aaa”},{“ id”:“ 2”,“名称”: “ bbb”} ],“ statusCode”:“ ACCEPTED”,“ statusCodeValue”:202}

我应该进行什么代码更改才能获得预期的输出。

我认为问题是private领域。 当我做场public ,杰克逊的工作,我不需要objectMapper.disable( 什么 ); 当字段是私有的,受保护的或程序包私有的时,则将其读取,但不会写入。

也就是说,假设您尝试使用org.codehaus.jackson.map.ObjectMapper (是,不是最新版本),而不是使用其他定义了ObjectMapper类的东西。

更改返回类型后,此方法有效。

我先前的回应是

public ResponseEntity<String> fnCall() {
     //code here
     return new ResponseEntity<String>(MarkResponse.toString(), HttpStatus.ACCEPTED);
}

我更改了它以使其正常工作。

  public MarkResponse fnCall() {
         //code here
         return response;
    }

暂无
暂无

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

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