반응형
1. JSON 라이브러리를 설치 해야한다.
- Spring Gradle 프로젝트 였음으로 Gradle로
- build.gradle 파일 dependencies에 JSON Simple 라이브러리 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//JSON 추가
implementation group: 'org.json', name: 'json', version: '20160810'
}
객체 안에 배열을 만들고, 배열 안에 객체, 객체 안에 객체를 만들고 싶을때 만드는 방법
public String parseHotkeyConfig(SystemConfigDTO systemConfigDTO) {
JSONObject hotKey = new JSONObject();
JSONArray hotkeyList = new JSONArray();
String[] eventNames = {"PreviousImage", "NextImage", "CancelJudge", "HoldJudge", "PanelJudge", "CheckDefect", "LoadDefect"};
for (String eventName : eventNames) {
JSONObject hotkeyData = new JSONObject();
hotkeyData.put("altKey", systemConfigDTO.getSelectValue(eventName, systemConfig).equals("Alt"));
hotkeyData.put("ctrlKey", systemConfigDTO.getSelectValue(eventName, systemConfig).equals("Ctrl"));
hotkeyData.put("shiftKey", systemConfigDTO.getSelectValue(eventName, systemConfig).equals("Shift"));
hotkeyData.put("keyCode", systemConfigDTO.getKeyCode(eventName, systemConfig));
hotkeyData.put("key", systemConfigDTO.getKey(eventName, systemConfig));
JSONObject hotkey = new JSONObject();
hotkey.put("key", hotkeyData);
hotkey.put("evt", eventName);
hotkeyList.add(hotkey);
}
hotKey.put("CommonShortKeyList", hotkeyList);
return hotKey.toJSONString();
}
public String getSelectValue(String eventName, SystemConfigDTO systemConfig) {
switch (eventName) {
case "PreviousImage":
// getPreviousImageSelect 이 값은 Front에서 SelectBox 선택으로 보낸 값 (ctrl, Alt, Shift, None 중 택 1) Select가 Alt면 altKey 값에 true를 넣는다
return systemConfigDTO.getPreviousImageSelect();
case "NextImage":
return systemConfigDTO.getNextImageSelect();
case "CancelJudge":
return systemConfigDTO.getCancelJudgeSelect();
case "HoldJudge":
return systemConfigDTO.getHoldJudgeSelect();
case "PanelJudge":
return systemConfigDTO.getPanelJudgeSelect();
case "CheckDefect":
return systemConfigDTO.getCheckDefectSelect();
case "LoadDefect":
return systemConfigDTO.getLoadDefectSelect();
default:
return null;
}
}
public String getKeyCode(String eventName, SystemConfigDTO systemConfig) {
switch (eventName) {
case "PreviousImage":
return systemConfigDTO.getPreviousKeyCode();
case "NextImage":
return systemConfigDTO.getNextImageKeyCode();
case "CancelJudge":
return systemConfigDTO.getCancelJudgeKeyCode();
case "HoldJudge":
return systemConfigDTO.getHoldJudgeKeyCode();
case "PanelJudge":
return systemConfigDTO.getPanelJudgeKeyCode();
case "CheckDefect":
return systemConfigDTO.getCheckDefectKeyCode();
case "LoadDefect":
return systemConfigDTO.getLoadDefectKeyCode();
default:
return null;
}
}
public String getKey(String eventName, SystemConfigDTO systemConfig) {
case "PreviousImage":
return systemConfigDTO.getPreviousKey();
case "NextImage":
return systemConfigDTO.getNextImageKey();
case "CancelJudge":
return systemConfigDTO.getCancelJudgeKey();
case "HoldJudge":
return systemConfigDTO.getHoldJudgeKey();
case "PanelJudge":
return systemConfigDTO.getPanelJudgeKey();
case "CheckDefect":
return systemConfigDTO.getCheckDefectKey();
case "LoadDefect":
return systemConfigDTO.getLoadDefectKey();
default:
return null;
}
코드 설명:
- parseHotkeyConfig 메서드가 호출되면 PreviousImage, NextImage, CancelJudge, HoldJudge, PanelJudge, heckDefect, LoadDefect 이렇게 7개의 단축키 정보를 JSON으로 만들기 위해 for문이 돈다.
- for문에서는 getSelectValue, getKeyCode, getKey 메서드가 실행되면서 파라미터 값으로 넘긴 EventName에 PreviousImage가 있으면 PreviousImage와 관련된 select값, KeyCode값, Key 값을 DTO에서 찾아온다.
- 그러고 hoyKeyList인 JSONArray에 add 시킨다. 그 후 다른 EventName 6개도 반복하며 실행
결과
{"CommonShortKeyList" : [{ "evt" : "PreviousImage", "key" : { "altkey" : false, "ctrlKey ": false, "shiftKey" : false, "keyCode": 30, "key" : "a"}},{ "evt" : "PreviousImage", "key" : { "altkey" : false, "ctrlKey ": false, "shiftKey" : false, "keyCode": 30, "key" : "a"}}]}
- 원래 7개가 들어가 있지만 여기선 2개만 쪼개서 보이게 해놨다.
JSON안에 JSON 3개 넣는 방법
public String parseEnvironmentConfig(SystemConfigDTO systemConfigDTO) {
JSONObject environment = new JSONObject(); // 최종 JSON
JSONObject imageRadio = new JSONObject(); // JSON 안에 들어갈 JSON 1
JSONObject tableRowConfig = new JSONObject(); // JSON 안에 들어갈 JSON 2
JSONObject moduleInfo = new JSONObject(); // JSON 안에 들어갈 JSON 3
imageRadio.put("max", systemConfigDTO.getImageMax());
imageRadio.put("min", systemConfigDTO.getImageMin());
tableRowConfig.put("DefalutValue", systemConfigDTO.getDefalutValue());
tableRowConfig.put("JobList", systemConfigDTO.isJobList());
tableRowConfig.put("DefectMeasureList", systemConfigDTO.isDefectMeasureList());
moduleInfo.put("DefalutEquipGroup", systemConfigDTO.getDefalutEquipGroup());
environment.put("ImageRatio", imageRadio);
environment.put("TableRowConfig", tableRowConfig);
environment.put("ModuleInfo", moduleInfo);
return environment.toJSONString();
}
- 간단하니까 설명은 생략하겠다
JSON 하나만 만드는 방법
public String parseFilepathConfig(SystemConfigDTO systemConfigDTO) {
JSONObject filepath = new JSONObject();
filepath.put("tkoutPath", systemConfigDTO.getTkoutPath());
filepath.put("rcsPath", systemConfigDTO.getRcsPath());
filepath.put("screenShotPath", systemConfigDTO.getScreenShotPath());
return filepath.toJSONString();
}
- 간단하니까 설명은 생략하겠다
반응형
'Dev > 실무 사용 기술' 카테고리의 다른 글
Spring+Vue.js 다국어 API 구현 (0) | 2024.01.14 |
---|