如何在Spring Boot中使用数组中的数组?

时间:2018-12-21 07:11:48

标签: java spring-boot resttemplate

我正在尝试使用一个响应如下的API:-

{
    "data": [
        [
            "2075/76",
            "2075-2094767",
            "2075/08/29",
            1466,
            "210003502",
            null,
            "गीता  श्रीस काउचा थापा",
            2418146,
            null,
            14224,
            "Production",
            1800,
            0,
            "2074/75",
            "2075/09/02",
            "Cash",
            null,
            "1",
            null,
            null,
            11019,
            "2018/12/17",
            0,
            "T",
            null,
            "2018/12/17"
        ],
        [
            "2075/76",
            "2075-2093892",
            "2075/08/28",
            1466,
            "210003502",
            null,
            "हेमन्त  बुढाथोकी",
            2417027,
            null,
            14224,
            "Production",
            1400,
            0,
            "2074/75",
            "2075/09/02",
            "Cash",
            null,
            "1",
            null,
            null,
            11019,
            "2018/12/17",
            0,
            "T",
            null,
            "2018/12/17"
        ]
]
}

我正在使用Spring Boot and Rest模板。

 @GetMapping("/consume")
    public void consumeApi(@RequestParam  String date) throws IOException {
        BankVoucherParams params = setVoucherParams(date);
        RestTemplate restTemplate = new RestTemplate();

        String token = getBearerToken();

        HttpHeaders headers = new HttpHeaders();
        headers.setBearerAuth(token);


        HttpEntity<BankVoucherParams> request = new HttpEntity<BankVoucherParams>(params, headers);

        String response = restTemplate.postForObject(endpoint, request, String.class);

        ObjectMapper objectMapper = new ObjectMapper();

        Object o = objectMapper.readValue(response,Object.class);




        System.out.println(response);
    }
在上面的代码中,

我得到了字符串形式的响应。我想将每个值映射到pojo类并将其插入数据库。现在,我不知道如何将每个数组映射到我的pojo类中。

2 个答案:

答案 0 :(得分:0)

如果pojo在该项目范围内可用,您可以像这样简单地解析整个对象:

ResponseEntity<Object> response = restTemplate.exchange(url, HttpMethod.GET, entity, Object.class);

其中Object可以用您的pojo代替。所以你会有类似

的东西
ResponseEntity<YourClass> response = restTemplate.exchange(url, HttpMethod.GET, entity, YourClass.class);

如果需要映射它,可以使用GsonJackson.之类的库

编辑: 如下所述,您不会收到键/值对。因此,您需要使用GsonJackson

这样的映射器库

答案 1 :(得分:0)

您可以将json字符串转换为HashMap,其键为“数据”,值为

List<List<String>> 

String[][]. 

然后遍历该值并将其设置为POJO。

如果您想将每个位置动态分配给POJO的特定字段,则可能希望保留位置字段的映射并使用反射来设置字段。 http://tutorials.jenkov.com/java-reflection/fields.html