스트링 타입인 json을 JSONOBJECT로 바꿔서 넣기(feat.json simple 라이브러리)
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
반복문이 돌면서 원하는 값을 찾을 수 있다.