개발

스트링 타입인 json을 JSONOBJECT로 바꿔서 넣기(feat.json simple 라이브러리)

이영서 2022. 8. 12. 18:56

string 타입이 json 타입으로 자동으로 바꿀수 있다.

라이브러리를 사용하면 된다.

 

먼저 string 타입인 json을 만들어주자.

{
    "employees": [
        {
            "name":"John",
            "age":31,
            "city":"New York"
        },
        {
            "name":"Park",
            "age":21,
            "city":"Seoul"
        }
    ]
}

 

String 값으로 넣어준다.

 

그대로 스프링에 복사 하면

 

String ss = "{\r\n" + 
"    \"employees\": [\r\n" + 
"        {\r\n" + 
"            \"name\":\"John\",\r\n" + 
"            \"age\":31,\r\n" + 
"            \"city\":\"New York\"\r\n" + 
"        },\r\n" + 
"        {\r\n" + 
"            \"name\":\"Park\",\r\n" + 
"            \"age\":21,\r\n" + 
"            \"city\":\"Seoul\"\r\n" + 
"        }\r\n" + 
"    ]\r\n" + 
"}";

이렇게 뜰것이다.

 

 

그리고 인터넷에서 json-simple-1.1.1.jar 파일을 다운받자.(구글링하면 나옴)

 

web-inf 폴더안에 lib 폴더 안에

json-simple-1.1.1.jar 파일을 추가해야한다.

그리고 프로젝트 오른쪽 마우스 클릭, properties => java path에 jar 파일을 추가해준다.

 

이 라이브러리 외에도 gson을 사용해도 ssap possible (쌉가능) 이다.

그외  import tomcat.util 어쩌구 안에 있는 jsonArray 타입을 이용하면 json타입으로 파싱이 안된다.

라이브러리 넣어준다고 간단한것인데 오래걸렸다. 흠..

따봉 simple아 고마워~

 

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





JSONParser jsonParser = new JSONParser();

JSONObject jsonObj = (JSONObject) jsonParser.parse(ss);

JSONArray employees= (JSONArray) jsonObj.get("employees");

 

그다음에 json String data가 잘 나오는지 확인한다.

for (int i = 0; i < employees.size(); i++) {
    JSONObject jsonSplit = (JSONObject) employees.get(i);
    jsonSplit.get("name"); //john, Park 
}

String ss를 jsonArray 타입이 아닌 jsonNode타입으로 바꿔서 넣어줄수도 있다.

	ObjectMapper objectMapper = new ObjectMapper();
    // JsonNode 생성 (readTree, readValue)
    JsonNode jsonNode2 = objectMapper.readValue(ss, JsonNode.class);

String 타입인 ss 를 그대로 readValue 안에 넣는다.

for (int i = 0; i < employees.size(); i++) {
 
    System.out.println("employees:" + ((ObjectNode) jsonNode2.get("employees").get(i)));
    //더 안에 있는 걸 꺼내려면 그대로 get("키이름")으로 꺼낸다.
    jsonNode2.get("employees").get(i).get("name");

}

 

결과값 : 

반복문이 돌면서 하나씩 찍힌다.

employees:{"name":"John","age":31,"city":"New York"}

employees:{"name":"Park","age":21,"city":"Seoul"}

 

name만 꺼내면 

john

Park

 

반복문이 돌면서 원하는 값을 찾을 수 있다.