작성
·
320
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
파일을 {"index":"CVE-2020-22782","count":11} 이렇게만 만드니까 오류는 발생하지 않네요! getindex 함수 만들어서 프린터에 찍히는거 까지 확인했구요ㅠ 이 배열을 넘겨야하는데.. 쉽지않네요ㅠ
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은 중괄호로 시작해서 중괄호로 끝나야 합니다.
안녕하세요. 재혁님
codesweaver님 이야기에 추가로 다음과 같이 해주세요.
MyData {
List<CVE> data
}
readValue(... MyData.class)
감사합니다.