web developer

[java] JSON 데이터를 controller에서 생성하여 jsp로 데이터 가져오기 본문

Language/Java

[java] JSON 데이터를 controller에서 생성하여 jsp로 데이터 가져오기

trueman 2022. 11. 20. 18:15
728x90
728x90

JSON 데이터 controller(java단)에서 만들어 jsp에 JSON 데이터 보내기


POM.xml에 depencency 추가 

<dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
</dependency>

modelandView로 가져오기 


import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

@RequestMapping(value = "/test.do", method = RequestMethod.GET)
@ResponseBody
public ModelAndView test() {

    ModelAndView mv = new ModelAndView();
    mv.setViewName("/board/content"); // 뷰의 이름
    try {
        JsonObject obj1 = new JsonObject(); //상위 오브젝트 생성
        JSONArray arrayData = new JSONArray(); //array
        
        for(int i=0; i<3; i++){ //for문 안에 놓아야 한다. (중복 해결)
            JsonObject obj2 = new JsonObject(); 
            obj2.put("class",i);
            obj2.put("name",i);
            obj2.put("age",i);
            obj2.put("score",i);
            arrayData.add(obj2);
        }
        obj1.put("data", obj2); // 최상위의 jsonObject에 data 혹은 Array를 넣어준다.
        mv.addObject("obj1", obj1); // 뷰로 보낼 데이터 

    }catch(Exception e) {
        System.out.println("예외상황 발생")
    }
}
[{"data":
	{"score":0,"name":0,"class":0,"age":0},
	{"score":1,"name":1,"class":1,"age":1},
	{"score":2,"name":2,"class":2,"age":2}
]}

 


String으로 가져오기 / JSONArray


import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

@RequestMapping(value = "/test.do", method = RequestMethod.GET)
@ResponseBody
public String test() {
    String jsonData = ""; // String 

    try { 
        JSONObject obj1 = new JSONObject(); //상위 - 1차 오브젝트 생성 
        JSONArray arrayData = new JSONArray(); //array
        for(int i=0; i<3; i++){
            //for문 안에 놓아야 한다. (중복 해결)
            JSONObject obj2 = new JSONObject(); // 2차 오브젝트  생성
            obj2.put("class",i);
            obj2.put("name",i);
            obj2.put("age",i);
            obj2.put("score",i);
            arrayData.add(obj2);
        }
        //마지막으로 최상위의 jsonObject에 data 혹은 Array를 넣어준다.
        obj1.put("data", arrayData);
        jsonData = obj1.toString();

    }catch(Exception e) {
        System.out.println("예외상황 발생");
    }
    return jsonData;
}
[{"data":
	{"score":0,"name":0,"class":0,"age":0},
	{"score":1,"name":1,"class":1,"age":1},
	{"score":2,"name":2,"class":2,"age":2}
]}

String으로 가져오기 / JSONObject 


import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

@RequestMapping(value = "/test.do", method = RequestMethod.GET)
@ResponseBody
public String test() {
    String jsonData = ""; // String 

    try { 
        JSONObject obj1 = new JSONObject(); // 상위 1차  오브젝트 생성 
        JSONObject obj2 = new JSONObject(); // 2차  오브젝트 생성 
        for(int i=0; i<3; i++){
            //for문 안에 놓아야 한다. (중복 해결)
            JSONObject obj3 = new JSONObject(); // 3차 오브젝트  
            obj3.put("class",i);
            obj3.put("name",i);
            obj3.put("age",i);
            obj3.put("score",i);
            obj2.put("student" + i, obj3);
        }
        //마지막으로 최상위의 jsonObject에 data 혹은 Array를 넣어준다.
        obj1.put("data", obj2);
        jsonData = obj1.toString();

    }catch(Exception e) {
        System.out.println("예외상황 발생");
    }
    return jsonData;
}
{
	"data":{
		"student0": {
			"score":0,
			"name":0,
			"class":0,
			"age":0
		},
		"student1": {
			"score":1,
			"name":1,
			"class":1,
			"age":1
		},
		"student2": {
			"score":2,
			"name":2,
			"class":2,
			"age":2
		}
	}
}

String으로 가져오기 / JSONObject + 배열 


import org.json.simple.JSONObject;
import org.json.simple.JSONArray;

@RequestMapping(value = "/test.do", method = RequestMethod.GET)
@ResponseBody
public String test() {
    String jsonData = ""; // String 

    try { 
        JSONObject jsonObj1 = new JSONObject(); // 1차  오브젝트 생성 
        JSONObject jsonObj2 = new JSONObject(); // 2차  오브젝트 생성 
        
        String [] array = new String[1];
        String first = "first";
        String second = "second";
        array[0] = first + ',' +  second;

        // array : [Ljava.lang.String;@290b6f9f 
        // array -> 주소값 
        jsonObj2.put("test1", array);

        // Arrays.toString(array) : [first,second]
        // Arrays.toString(array) -> 배열값 출력
        jsonObj2.put("test2", Arrays.toString(array));
        
        //마지막으로 최상위의 jsonObject1에 data 혹은 Array를 넣어준다.
        jsonObj1.put("data", jsonObj2);
        jsonData = jsonObj1.toString();

    }catch(Exception e) {
        System.out.println("예외상황 발생");
    }
    return jsonData;
}
{
    "data": {
               "test2":"[first,second]",
               "test1":[Ljava.lang.String;@36e1c3be
            }
}

참조 : https://tsop.tistory.com/29 

참조 : https://sosodaily.tistory.com/35

참조 : https://ktko.tistory.com/entry/JAVA%EC%97%90%EC%84%9C-JSON-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0

728x90
728x90