인프런 커뮤니티 질문&답변

leeflection님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

강의 소개

안녕하세요 선생님

작성

·

316

0

강의와는 별개로 강의를듣고 혼자 뭔가를 만들어보고 싶어서 구글차트를 이용해서 그래프 그리기를 하고 싶은데

문제가 생겨서ㅠ 구글링도 해보고 OKKY 커뮤니티에도 올려봐도 답이안나와서.. 여기까지 오게되었네요..ㅠ

package hello.hellospring.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.io.File;
import java.io.IOException;

@Controller
@RequestMapping("/")
public class RootController {



@GetMapping
public String index(Model model) {
model.addAttribute(
"chartData", getChartData());
return "index";
}

/* private List<List<Object>> getChartData() {
return List.of(
List.of("CVE-2020-22782", 11),
List.of("CVE-2020-22781", 10),
List.of("CVE-2020-22783", 10),
List.of("CVE-2020-22789", 10),
List.of("CVE-2020-22784", 8),
List.of("CVE-2020-36327", 7),
List.of("CVE-2020-7038", 7),
List.of("CVE-2020-7037", 7),
List.of("CVE-2020-2278", 7),
List.of("CVE-2020-22790", 7)
);
}*/
private CVE getChartData() {
ObjectMapper mapper =
new ObjectMapper();


try {
CVE cve = mapper.readValue(
new File("C:\\json\\test.json"), CVE.class);
System.out.println(cve);
} catch (IOException e) {
e.printStackTrace()
;
}
return null;

}

}

class CVE {
private String index;
private int count;
}

주석 부분이 JSON 파일을 열지못해서 저렇게 테스트 해보았던거구요ㅠㅠ


밑에가 JSON 파일데이터 입니다.

[{"index":"CVE-2020-22782","count":11}, {"index":"CVE-2020-22781","count":10}, {"index":"CVE-2020-22783","count":10}, {"index":"CVE-2020-22789","count":10}, {"index":"CVE-2020-22784","count":8}, {"index":"CVE-2020-36327","count":7}, {"index":"CVE-2020-7038","count":7}, {"index":"CVE-2020-7037","count":7} ,{"index":"CVE-2020-22785","count":7} ,{"index":"CVE-2020-22790","count":7}]


돌려서 새로고침하면
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `hello.hellospring.controller.CVE` out of START_ARRAY token at [Source: (File); line: 1, column: 1] 이 에러가 뜨네요..

객체자체를 MODEL.ATTRIBUTE에 매개변수로 넣고 싶은데 제가 놓치고있는게 뭔지 궁금하네요 ㅜㅜ

답변 2

1

leeflection님의 프로필 이미지
leeflection
질문자

파일을 {"index":"CVE-2020-22782","count":11} 이렇게만 만드니까 오류는 발생하지 않네요! getindex 함수 만들어서 프린터에 찍히는거 까지 확인했구요ㅠ 이 배열을 넘겨야하는데.. 쉽지않네요ㅠ

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 재혁님

codesweaver님 이야기에 추가로 다음과 같이 해주세요.

MyData {

List<CVE> data

}

readValue(... MyData.class)

감사합니다.

0

{ 
  "data": [ 
    {"index":"CVE-2020-22782","count":11}, 
    {"index":"CVE-2020-22781","count":10}, 
    {"index":"CVE-2020-22783","count":10}, 
    {"index":"CVE-2020-22789","count":10}, 
    {"index":"CVE-2020-22784","count":8}, 
    {"index":"CVE-2020-36327","count":7}, 
    {"index":"CVE-2020-7038","count":7},
   {"index":"CVE-2020-7037","count":7},
    {"index":"CVE-2020-22785","count":7},
    {"index":"CVE-2020-22790","count":7} 
  ] 
}

JSON파일이 형식이 잘못된것 아닌가요?

JSON은 중괄호로 시작해서 중괄호로 끝나야 합니다.