ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • json
    JAVA/웹 프로그래밍 - Spring 2021. 1. 11. 18:19

    json은 자바스크립트의 형식으로 쓰여있다. 키와 값으로 구분한다.
    서버를 통해 데이터가 넘어온다.

     

    Maven프로젝트를 하나 생성하자. Maven 프로젝트를 생성하는 방법은 아래에 잘 나와 있다.

    designatedroom87.tistory.com/336?category=909022

     

    프로젝트를 Maven 프로젝트로 변경하기

    아래의 내용을 참고해보자. designatedroom87.tistory.com/334?category=909022 Maven 설치 및 설정 우리가 앞에서 서블릿에서 게시판 만들기에서 이미지 업로드 시에 cos.jar파일을 WEB-INF/lib폴더에 추가해..

    designatedroom87.tistory.com

    아래와 같이 크리에이트 심플 프로젝트 설정 체크하자.

    그리고 아래와 같이 입력한다.

     

    pom.xml에 라이브러리를 추가해야 한다.

    웹 페이지에 maven repository 로 검색해서 사이트에 접속하고 json검색한다.

    웹 사이트는 다음과 같다.

    mvnrepository.com/search?q=json

     

    Maven Repository: json

    JSON Last Release on Dec 28, 2020

    mvnrepository.com

     

    아래의 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를 실행해보자.

    모든 데이터들이 출력됨을 알 수 있다.

     

    프로젝트에서 파일과 폴더의 계층 구조는 다음과 같다.

     

    댓글

Designed by Tistory.