build.gradle에
implementation 'com.google.code.gson:gson:2.8.5';
추가 후, 로그인 할 때 오류 발생
로그인 후 dto를 생성해서 json형식으로 반환하는 builder에서 오류가 발생한 것으로 보인다.
해당 서비스 위에
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration.class})
설정을 해주니 잘 작동하나했지만.. 이걸 해주면 gson을 사용하던 컨트롤러가 잘 작동되지않는다.
gson을 사용하면 순서가 유지된다는 장점이 있지만, 우리 프로젝트에서는 그렇게 중요하지않아서
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
gson말고 json-simple으로 사용하는걸로 바꿨다.
추가로 json을 사용해도 데이터를 넘길 때 JSONObject가 아닌 SortedMap을 사용하면 gson을 사용하지 않아도 순서가 보장된다.
public JSONObject matchDetailInfo(String matchId) throws IOException, ParseException {
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("https://asia.api.riotgames.com/lol/match/v5/matches/" + matchId + "?api_key=" + mykey);
HttpResponse response = (HttpResponse) client.execute(request);
HttpEntity entity = response.getEntity();
String matchInfo = EntityUtils.toString(entity);
JSONParser parser = new JSONParser();
Object obj = parser.parse(matchInfo);
JSONObject jsonObj = (JSONObject) obj;
// JSONObject jso = (JSONObject) jsonObj.get("metadata");
JSONObject info = (JSONObject) jsonObj.get("info");
JSONArray participants = (JSONArray) info.get("participants");
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
jsonObject.put("gameMode", info.get("gameMode"));
jsonObject.put("gameDuration", info.get("gameDuration"));
for (int i = 0; i < participants.size(); i++) {
JSONObject participant = (JSONObject) participants.get(i);
JSONObject data = new JSONObject();
data.put("summonerName", participant.get("summonerName"));
data.put("championName", participant.get("championName"));
data.put("individualPosition", participant.get("individualPosition"));
data.put("champLevel", participant.get("champLevel"));
data.put("kills", participant.get("kills"));
data.put("deaths", participant.get("deaths"));
data.put("assists", participant.get("assists"));
data.put("totalDamageDealtToChampions", participant.get("totalDamageDealtToChampions"));
data.put("totalDamageTaken", participant.get("totalDamageTaken"));
data.put("goldEarned", participant.get("goldEarned"));
data.put("item0", participant.get("item0"));
data.put("item1", participant.get("item1"));
data.put("item2", participant.get("item2"));
data.put("item3", participant.get("item3"));
data.put("item4", participant.get("item4"));
data.put("item5", participant.get("item5"));
data.put("item6", participant.get("item6"));
data.put("wardsPlaced", participant.get("wardsPlaced"));
data.put("wardsKilled", participant.get("wardsKilled"));
jsonArray.add(data);
}
System.out.println(jsonArray);
jsonObject.put("users", jsonArray);
return jsonObject;
}
이제 다른 컨트롤러도 지장없이 사용할 수 있다.
'오류' 카테고리의 다른 글
[Postman] Invisible Character 오류 (0) | 2024.09.04 |
---|---|
JWT 로그아웃 구현 시 [Redis parameter 오류] (0) | 2024.09.02 |
[오류 정리] (0) | 2024.08.30 |
[Springboot] mysql List, null 에러 @Builder.Default (0) | 2023.08.25 |
[Swagger] Failed to fetch (http → https) (0) | 2023.08.17 |