-
Java JSON 파싱☕️ java 2022. 10. 7. 19:02
Java를 이용하여 JSON 파싱을 해보자
JSON Parser
JSON 파일을 땡겨와서 이를 저장하기 위해서 JSON 데이터를 사용해야 한다.
- JSONObject
- JSONArray
를 사용할 수 있다.
JSON-Simple
json-simple 라이브러리는 JSON 파싱을 지원한다.
- org.json.simple.JSONObject
build.gradle
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
JSONObject
객체(주로 String)을 Json 객체로 바꿔주거나 Json 객체를 새로 만드는 역할
JSONArray
Json들이 들어 있는 Array
JSONObject 사용
jsonObject = new JSONObject(); jsonObject.put("name", "beomsic"); jsonObject.put("OS", "iOS"); jsonObject.put("age", 11); System.out.println(jsonObject.toJSONString());
JSONObject 객체를 만들고 put 메소드를 사용해 데이터를 넣어준다.
toJSONString() 메소드를 이용해 JSON 포맷 문자열 데이터로 만들어 준다.
만들어진 json 데이터들의 값은 put 메소드로 입력한 순서와 관계없이 출력된다.
- HashMap 클래스를 상속받고 있다.
- HashMap처럼 JSONObject에 추가한 엔트리의 값의 순서는 보장되지 않는다.
JSONObject 객체 생성시 HashMap 객체를 받을 수 있다.
HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("Name", "beomsic"); hashMap.put("OS", "iOS"); hashMap.put("age", "11"); JSONObject jsonObject = new JSONObject(hashMap); System.out.println(jsonObject.toJSONString());
JSONArray 사용
- JSONObject - 객체를 다룸
- JSONArray - JSON 배열을 다룸
HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("Name", "beomsic"); hashMap.put("OS", "iOS"); hashMap.put("age", "11"); JSONObject beomsic = new JSONObject(hashMap); hashMap = new HashMap<>(); hashMap.put("Name", "kim"); hashMap.put("OS", "Android"); hashMap.put("age", "11"); JSONObject kim = new JSONObject(hashMap); JSONArray jsonArray = new JSONArray(); jsonArray.add(beomsic); jsonArray.add(kim); System.out.println(jsonArray.toJSONString());
JSONObject 객체들을 만들어 데이터를 설정하고 JSONArray 객체에 add() 메소드로 추가하면 JSONArray 객체를 생성할 수 있다.
JSONParser 사용
JSON 포맷의 문자열을 파싱하여 JSONObject로 생성 후 자바 로직에서 데이터 사용
String jsonString = "{\"name\":\"beomsic\",\"OS\":\"iOS\",\"age\":\"11\",\"Name\":\"kim\"}"; jsonParser = new JSONParser(); try { Object result = jsonParser.parse(jsonString); if (result instanceof JSONObject) { jsonObject = (JSONObject)result; System.out.println(jsonObject.toJSONString()); } else if (result instanceof JSONArray) { jsonArray = (JSONArray)result; System.out.println(jsonArray.toJSONString()); } } catch (ParseException e) { e.printStackTrace(); }
JSON 포맷 문서를 JSONParser 객체의 parse() 메소드를 이용해서 파싱한다.
instanceof 연산을 이용해 클래스를 파악하고 캐스팅해서 사용하면 된다.
참고 자료
'☕️ java' 카테고리의 다른 글
equals / hashCode (0) 2022.12.07 CheckedException 과 UncheckedException (0) 2022.10.10 가비지 컬렉션(GC) ❓ (0) 2022.10.10 Java version 별 특징 (0) 2022.10.09 HttpURLConnection (0) 2022.10.07