-
jsonJAVA/웹 프로그래밍 - Spring 2021. 1. 11. 18:19
json은 자바스크립트의 형식으로 쓰여있다. 키와 값으로 구분한다.
서버를 통해 데이터가 넘어온다.Maven프로젝트를 하나 생성하자. Maven 프로젝트를 생성하는 방법은 아래에 잘 나와 있다.
designatedroom87.tistory.com/336?category=909022
아래와 같이 크리에이트 심플 프로젝트 설정 체크하자.
그리고 아래와 같이 입력한다.
pom.xml에 라이브러리를 추가해야 한다.
웹 페이지에 maven repository 로 검색해서 사이트에 접속하고 json검색한다.
웹 사이트는 다음과 같다.
mvnrepository.com/search?q=json
아래의 json을 선택한다.
그리고 가장 많이 사용한 것을 선택하자.
그리고 아래의 dependency 태그 내용을 복사한다.
아래의 내용이 위의 dependency 태그 내용이다.
이 내용을 pom.xml에 추가하자.
추가 하기전에 pom.xml에 dependencies 태그를 만들고 나서, 이 태그 안에 붙여넣으면 된다.
추가해야할 내용
<dependencies> <!-- https://mvnrepository.com/artifact/org.json/json --> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency> </dependencies>
pom.xml 의 전체 내용
더보기<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.iot</groupId> <artifactId>json</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.json/json --> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency> </dependencies> </project>
src/main/java폴더에 Main.java 파일을 생성하자.
json을 알아보기 전에, 우선 아래의 Main.java를 잘 보도록 하자.
Main.java
더보기package json; import org.json.JSONObject; public class Main { public static void main(String[] args) { // json은 키와 값으로 구성된다. String json = "{\"name\":\"lee\",\"age\":10,\"live\":\"seoul\"}"; JSONObject jobj = new JSONObject(json); // JSONObject를 통해서 파싱을 한다. String name = jobj.getString("name"); int age = jobj.getInt("age"); String live = jobj.getString("live"); System.out.printf("name : %s, age : %d, live : %s\n",name,age,live); } }
위의 Main.java를 실행해보자.
이번에는 파일로부터 데이터들을 불러오자.
json은 보통 파일에 저장한 내용을 가지고 올 때, 쓰는 문법이다.
프로젝트의 바로 하위에 파일을 하나 만든다.
파일의 이름은 person.json 이라 한다. 이 파일의 위치는 반드시 프로젝트 하위여야 한다.
person.json
{"name":"lee","age":10,"live":"seoul"}
src/main/java폴더에 Main2.java 파일을 만든다.
Main2.java
더보기package json; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.json.JSONObject; public class Main2 { public static void main(String[] args) { try { InputStream in = new FileInputStream( new File("person.json") ); byte[] buf = new byte[100]; try { in.read(buf); System.out.println(buf); } catch (IOException e) {e.printStackTrace();} String sbuf = new String(buf); System.out.println(sbuf); JSONObject jobj = new JSONObject(sbuf); String name = jobj.getString("name"); int age = jobj.getInt("age"); String live = jobj.getString("live"); System.out.printf("name : %s, age : %d, live : %s\n",name,age,live); } catch (FileNotFoundException e) {e.printStackTrace();} } }
Main2.java를 실행해보자.
이번에는이번에는 파일에 배열로 저장된 내용을 불러오는 방법에 대해 알아보자.
아래의 board.json의 내용을 살펴보자.
아래의 board.json 파일을 프로젝트의 하위에 만들고 그 내용을 입력하자.
board.json
{ "board": [ { "title": "title1", "writer": "홍길동1", "count": 5 }, { "title": "title2", "writer": "홍길동2", "count": 6 }, { "title": "title3", "writer": "홍길동3", "count": 7 } ] }
src/main/java폴더에 Main3.java 파일을 만든다.
Main3.java
더보기package json; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.json.JSONArray; import org.json.JSONObject; public class Main3 { public static void main(String[] args) { try { InputStream in = new FileInputStream( new File("board.json") ); byte[] buf = new byte[4096]; try { in.read(buf);} catch (IOException e) {e.printStackTrace();} String sbuf = new String(buf); System.out.println(sbuf); JSONObject jobj = new JSONObject(sbuf); // 배열 JSONArray jarray = jobj.getJSONArray("board"); for ( int i = 0; i < jarray.length(); i++ ) { JSONObject l_obj = jarray.getJSONObject(i); String l_title = l_obj.getString("title"); String l_writer = l_obj.getString("writer"); int count = l_obj.getInt("count"); System.out.printf( (i+1) +"번째 데이터 출력 => title : %s, writer : %s, count : %d\n", l_title,l_writer,count ); } } catch (FileNotFoundException e) {e.printStackTrace();} } }
위의 Main3.java를 실행해보자.
이번에는 배열은 아니지만, 여러 개의 데이터가 있는 형태이다.
아래의 내용을 불러오는 방법에 대해 알아보자.
persons.json 파일은 마찬가지로 프로젝트의 하위에 생성해야 한다.
persons.json
{ "hong1":{"phone":"010-1111-1111","address":"송파구"}, "hong2":{"phone":"010-1111-2222","address":"강서구"}, "hong3":{"phone":"010-1111-3333","address":"서초구"}, "hong4":{"phone":"010-1111-4444","address":"강남구"} }
src/main/java폴더에 Main4.java 파일을 만든다.
Main4.java
더보기package json; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.json.JSONObject; public class Main4 { public static void main(String[] args) { try { InputStream in = new FileInputStream( new File("persons.json") ); byte[] buf = new byte[4096]; try { in.read(buf);} catch (IOException e) {e.printStackTrace();} String sbuf = new String(buf); System.out.println(sbuf); JSONObject jobj = new JSONObject(sbuf); // 1. 기본 데이터 출력하는 부분------------------ JSONObject person = jobj.getJSONObject("hong1"); String phone = person.getString("phone"); String address = person.getString("address"); System.out.printf( "phone : %s, address : %s\n",phone,address); // --------------------------------------- } catch (FileNotFoundException e) {e.printStackTrace();} } }
위의 Main4.java를 실행해보자. 우락 출력한 것은 첫 번째 데이터의 정보이다.
그런데, 위에서 규칙이 있음을 알게된다.
즉, hong1, hong2... 이런식으로 앞의 이름은 같고 뒤의 숫자가 하나씩 증가한다는 사실이다.
위의 사실을 이용하면 반복문을 통해 모든 데이터들을 출력할 수 있음을 알 수 있다.
아래의 내용을 보자.
Main4.java
더보기package json; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.json.JSONArray; import org.json.JSONObject; public class Main4 { public static void main(String[] args) { try { InputStream in = new FileInputStream( new File("persons.json") ); byte[] buf = new byte[4096]; try { in.read(buf);} catch (IOException e) {e.printStackTrace();} String sbuf = new String(buf); System.out.println(sbuf); JSONObject jobj = new JSONObject(sbuf); // 1. 기본 데이터 출력하는 부분------------------ JSONObject person = jobj.getJSONObject("hong1"); String phone = person.getString("phone"); String address = person.getString("address"); System.out.printf( "phone : %s, address : %s\n",phone,address); // --------------------------------------- // 2. 전체 데이터 출력하는 부분--------------------------- for ( int i = 0; i < jobj.length(); i++ ) { String l_name = "hong" +(i+1); JSONObject l_person = jobj.getJSONObject(l_name); String l_phone = l_person.getString("phone"); String l_address = l_person.getString("address"); System.out.printf((i+1)+"번째 데이터 출력 => " +"phone : %s, address : %s\n",l_phone,l_address); } } catch (FileNotFoundException e) {e.printStackTrace();} } }
Main4.java를 실행해보자.
모든 데이터들이 출력됨을 알 수 있다.
프로젝트에서 파일과 폴더의 계층 구조는 다음과 같다.
'JAVA > 웹 프로그래밍 - Spring' 카테고리의 다른 글
Spring MVC2 - 7. Web Socket( Led on/off, 서보모터 제어) (0) 2020.12.24 Spring MVC2 - 6 - (2). SpringMVC2에 아두이노와 시리얼 통신(버튼) (0) 2020.12.22 Spring MVC2 - 6 - (1). SpringMVC2에 아두이노와 시리얼 통신 (0) 2020.12.21 Spring MVC2 - 5. SpringMVC2 (0) 2020.12.21 Spring MVC2 - 4. MyBatis (0) 2020.12.18