simplism 2023. 1. 18. 15:39


 - 스프링내부에서 알아서 json형태로 만들어줌 (스트링내부 컨테이너)
 - @controller + @ ResponseBody  = @RestController
 - 클래스 상단에 @ResponseBody 입력시 모든메서드에 추가됨.
 - 컨트롤 내 메서드위에 @ResponseBody를 넣어주면, ★웹페이지(뷰)를 응답하지않고★,    
esponse body에 String을 추가해서 response 하겠다는 의미

@RequestMapping("/getString") 
        @ResponseBody
        public String responseString() {
                return "json";  
        }
        
        @RequestMapping("/getJsonObj")
        @ResponseBody
        public MemberDTO responseOBJ() {
                return service.memberIdRead("가오리상");
        }
        
        @RequestMapping("/getJsonArr")
        @ResponseBody
        public List<MemberDTO> getJsonArr() {
                return service.memberlist();
        }

 

원래는 이런식으로 json parser를 진행해야하지만, 위처럼 스프링에서 대신해준다.

public static void main(String[] args) throws FileNotFoundException, IOException, ParseException {
                //1. JSONParser 생성
                JSONParser parser = new JSONParser();
                
                //2. Json 파싱하기
                JSONObject root = (JSONObject) parser.parse(new FileReader("src/json/mydata2.json"));
                
                //3. JOSNObject의 데이터를 읽기 (object 1:1관계인경우_ name,age) 
                String name = (String) root.get("name");
                String age = (String) root.get("age");

                System.out.println("name : " + name);
                System.out.println("age : " + age);
                
                
                //4. JSONArrray의 데이터를 읽기 (JSONArrray 1:1관계인경우_ subject)
                JSONArray subjectlist = (JSONArray) root.get("subject");
                for (int i = 0; i < subjectlist.size(); i++) {
                        String subject = (String) subjectlist.get(i);
                        System.out.println("subject : " + subject);
                }
                
                // 5.[ history ] JSONArrray 안에 JSONObject 포함되있는경우 
                // [] > {}
                JSONArray historylist = (JSONArray) root.get("history");
                for (int i = 0; i < historylist.size(); i++) {
                        
                        JSONObject history = (JSONObject)historylist.get(i);
                        System.out.println("__________________month : "+ history.get("month"));
                        System.out.println("__________________subject : "+ history.get("subject"));
                }
                
                //6. [ addr ] JSONArrray 안에 JSONObject가 있는경우 
                // {}  > {} {}
                JSONObject addr = (JSONObject) root.get("addr");
                String zip = (String) addr.get("zip");
                String addr1 = (String) addr.get("addr1");

                System.out.println("zip : "+zip);
                System.out.println("addr1 : "+addr1);
        }

Json Parser
 /*         json 파일을 읽어서, JSONArray나 JSONObject로 변환
JSON파서 : JSONParser(json-simple.jar 라이브러리 파일에서 지원)
*/
public class JSONParserTest { 
        public static void main(String[] args) throws FileNotFoundException, IOException, ParseException {
                //1. JSONParser 생성
                JSONParser parser = new JSONParser();
                
                //2. json 파싱하기    //파싱이란? json문자열을 뜯어서 객체로 변환하는것
                JSONObject root = (JSONObject) parser.parse(new FileReader("src/json/mydata.json")); //파일로부터  받아서 읽을꺼니까 file reader
                                                                        //parse 메서드는 object를 리턴 ,  그러나 담는건 JSONOject이기에 캐스팅필요  // Exception 처리
               
               // 3. JSONObject의 데이터를 읽기
                String name = (String) root.get("name"); //root.get 리턴결과가 object라서 String캐스팅필요
                String age = (String) root.get("age"); //root.get 리턴결과가 object라서 String캐스팅필요
                System.out.println("name :" + name);
                System.out.println("age :" + age);
                
                // 4. JSONArray의 데이터를 읽기
                JSONArray subjectlist = (JSONArray) root.get("subject"); //root.get 리턴결과가 object라서 JSONArray캐스팅필요
                //System.out.println("subject : " + subjectlist);
                for (int i = 0; i < subjectlist.size(); i++) {   //JSONArray length가 아니라 size()
                        String subject = (String)subjectlist.get(i);
                        System.out.println("subject : " + subject);
                }
        }
}