Невозможно распечатать LinkedHasMap в Java из-за ClassCastException, когда ключ правильный - PullRequest
0 голосов
/ 12 апреля 2020

Я тестирую REST API. Ниже мой JSON ответ.

[ {
  "id" : 1,
  "name" : "Chattagram"
}, {
  "id" : 2,
  "name" : "Rajshahi"
}, {
  "id" : 3,
  "name" : "Khulna"
}, {
  "id" : 4,
  "name" : "Barisal"
}, {
  "id" : 5,
  "name" : "Sylhet"
}, {
  "id" : 6,
  "name" : "Dhaka"
}, {
  "id" : 7,
  "name" : "Rangpur"
}, {
  "id" : 8,
  "name" : "Mymensingh"
} ]

Я преобразовал список в список HashMap. Я могу получить доступ к полю name, но при попытке получить id происходит следующее исключение. Я не понимаю, почему это исключение, потому что ключ правильный. Я дал образ консоли отладки, может кто-нибудь сказать мне, в чем проблема и как я могу получить доступ к id?

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

Исходный код:

@Test
    public void getEmployees() throws IOException {
        final String uri = "http://localhost:8080/public/geocode/divisions";

        RestTemplate restTemplate = new RestTemplate();
        String result = restTemplate.getForObject(uri, String.class);
        restTemplate.getForObject(uri, String.class);
        System.out.println(result);

        ObjectMapper mapper = new ObjectMapper();
        List<Map<String, String>> list = new ArrayList<>();
        list = mapper.readValue(result, List.class);
        System.out.println(list.get(0));//--------------out put : {id=1, name=Chattagram}
        Map<String, String> m = list.get(0);
        System.out.println("id : " + m.get("id"));     //------------problem line
        System.out.println("Name : " + m.get("name")); //------------working fine
        System.out.println(list);
    }

После установки точки останова в строке задачи отладочные переменные: Debug Output

1 Ответ

1 голос
/ 12 апреля 2020

Попробуйте

System.out.println("id : " + Integer.toString(m.get("id"));    
...