String을 JSONObject 파싱하는 방법

아래 소스는 String을 JSONObject로 파싱하는 방법입니다.

이와 같은 소스는 REST API로 JSON 형식의 텍스트를 불러 왔을 때 사용되며

더 좋은 방법이 있다면 댓글로 남겨주시면 감사하겠습니다.


		// json 형태로 바뀔 String 변수
		String json = "{\"result\":\"fail\",\"message\":\"account error :: reservation infomation empty\"}";
		// JSONParser로 객체 생성
		JSONParser parser = new JSONParser();
		// obj 객체에 String 형식을 JSONParser형식으로 바꿔 넣는다
		Object obj = parser.parse(json);
		// JSONObject로 변환
		JSONObject jsonObj = (JSONObject) obj;
		// 아래와 같이 key 안에 있는 key를 꺼내 쓸 쑤 있다.
		JSONObject market_data = (JSONObject) jsonObj.get("market_data");

'Java > source register' 카테고리의 다른 글

HttpsURLConnection을 사용하여 API 불러오기  (0) 2018.12.12

HttpsURLConnection을 사용하여 REST API 불러오는 방법

HttpsURLConnection을 사용하여 restful api를 불러오는 소스입니다.

HttpURLConnection도 이름과 import한 라이브러리를 변경 후 아래 소스와 동일 하게 사용 가능합니다.

아래 소스는 junit test로 만들어진 테스트용 소스이며 원하지 않는 라이브러리들은 빼셔도 좋습니다.


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;



import javax.net.ssl.HttpsURLConnection;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.junit.Test;



public class UnitTest {

	static private String API_URL = "사용 할 API url";
        String str = "";

	@Test
	public void test() throws Exception{

		BufferedReader in = null;
		try {
			URL url = new URL(API_URL);

			// 호출할 url 

			HttpsURLConnection con = (HttpsURLConnection)url.openConnection(); 
			con.setRequestMethod("GET"); 
			in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); 
			String line;
			while((line = in.readLine()) != null) { 

				// response를 차례대로 출력 
//				System.out.println(line); 
				str += line;

			}
		}catch (Exception e) {
			// TODO: handle exception
		}finally {
			if(in != null) try { in.close(); } catch(Exception e) { e.printStackTrace(); }
		} 

	}
}


'Java > source register' 카테고리의 다른 글

String을 JSONObject 파싱하는 방법  (0) 2018.12.13

Oracel 11g 설치하는 방법


안녕하세요 오늘은 오라클 설치하는 방법과 사용자를 생성하는 방법에 대해서 알아보겠습니다.

버전은 11g로 진행하겠습니다.


먼저 오라클 홈페이지에 접속을 합니다.

그 후 파일 1of2 파일과 2of2 파일 두개를 다 받습니다.



이 후 두 파일의 압축을 푼 후 2of2 내부에 있는 파일을 복사하여

1of2디렉토리에 Components에 붙여넣기로 파일을 복사 해줍니다.



다음 이 곳 링크로 들어가 튜토리얼대로 오라클을 설치합니다.


모든 설치가 끝났습니다. 이제 접속을 해볼텐데요

접속을 하기 위해 알아두어야 할 것들입니다.


1. 접속이름 : 원하는 아무 이름

2. 사용자 이름 : 생성한 사용자 이름

3. 비밀 번호 : 설정한 비밀번호

4. 호스트 이름 : window계정 or localhost

5. 서비스 이름 : 설치 시 설정 한 전역데이터베이스 이름





Oracle 사용자 생성하는 방법


이번엔 사용자를 생성해 보겠습니다.

win+R > cmd 로 접속하여 sqlplus로 접속합니다.

C:\User\PSJ> sqlplus "/as sysdba"

접속이 되었다면 새로운 유저를 생성해 보겠습니다.

구문은 아래와 같습니다.

SQL> create user [username] identified by [password];

계정을 생성 한 후 아래와 같이 권한을 부여 하겠습니다.

저는 계정을 admin으로 만들었습니다.

SQL> grent connect, resource, dba to admin;

아래 사진과 같이 unlock 후 계정을 전황하여 사용자를 확인하면 

마무리가 되었습니다.



이렇게 오라클을 설치하는 방법을 알아보았습니다.

저는 오라클을 사용하진 않지만 나중에 혹시라도 쓸 경우를 대비해 

미리 설치를 진행해 봤습니다. 


안녕하세요 오늘은 Java의 String문자열을 이용해서

equals()와 ==의 차이를 알아보겠습니다.

이 둘을 알기 전 메모리 관점에서 봐야하는데요

먼저 하나의 예시를 들어보겠습니다.


String을 생성하는 방법은 2가지가 있습니다.

String str1 = "sujin"; 
String str2 = new String("sujin");

System.out.println(str1); // result : sujin 
System.out.println(str2); // result : sujin

코드를 보시면 각각의 생성 방식이 다릅니다.


String str1 = "sujin";

위 구문의 경우 Heap내부의 String constant pool이란 곳에 저장을 합니다. 

만약 이미 존재하는 문자열이 있으면 이미 저장된 인덱스의 번호를 가리키게 되어있습니다.

String str2 = new String("sujin");

다음 위 구문은 말 그대로 객체를 생성합니다.

Heap내부의 레퍼런스 주소를 가지고 있습니다.


String str1 = "sujin"; 
String str2 = "sujin";

String str3 = new String("sujin"); 
String str4 = new String("sujin"); 

System.out.println(str1 == str2);	// result : true
System.out.println(str1 == str3);	// result : false
System.out.println(str3 == str4);	// result : false
System.out.println(str1.equals(str3)); // result : true

위 설명을 듣고 보니 이 소스가 이해가 되시나요?

==은 객체의 주소값을 비교하고 equals()는 객체의 값을 비교합니다.

이 것으로 조건문을 사용할 때 어떤 것을 사용해야 할지 더 명확하게 작성할 수 있습니다.

'Java > java' 카테고리의 다른 글

객체지향 프로그래밍이란? (Object Oriented Programming)  (0) 2018.06.27

Crawling setting 


프로젝트를 진행 하다보면 테스트 할 데이터가 필요합니다.

데이터를 직접 만들기엔 전문성이 떨어져 비영리적으로 사용할 목적으로 

다른 사이트에서 데이터를 빌려(?) 오는 크롤링을 사용해야합니다.


사용할 프레임워크는 Spring.

아래는 메이븐pom.xml 을 이용하여 라이브러리를 받아왔습니다.



        
            org.jsoup
            jsoup
            1.11.2
        
        
            com.googlecode.json-simple
            json-simple
            1.1.1
        
        
        
            net.sourceforge.htmlunit
            htmlunit
            2.29
        
        
        
            org.seleniumhq.selenium
            selenium-java
            3.3.1
        
         
        
            io.github.bonigarcia
            webdrivermanager
            1.6.0
            
                
                    com.google.guava
                    guava
                
            
        


프로젝트에 코드 적용 전 테스트를 위해 JUnit을 이용하여 기능 작동 여부를 테스트 할 건데요

그 전에 자신에게 맞는 브라우저를 선택 하여 드라이버를 설치 한 후 test/resource에 넣어 경로를 복사해둡니다. 


 브라우저

 주소 

 Chrome 

 https://sites.google.com/a/chromium.org/chromedriver/downloads

 Egdge 

 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

 Firefox

 https://github.com/mozilla/geckodriver/releases

 Safari

 https://webkit.org/blog/6900/webdriver-support-in-safari-10/


package org.yogiyo.app.crawling;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;



public class CrawlingTest {

    private WebDriver driver;

    @Before(value="mainTest")
    public void setUp()throws Exception{
        System.setProperty("webdriver.chrome.driver", "/Yogiyo/src/test/resources/driver/chromedriver");
        // 다운받은 ChromeDriver 위치를 넣어준다.
        driver = new ChromeDriver(); // Driver 생성
    }
    @After(value="mainTest")
    public void tearDown()throws Exception{
        driver.quit();  // Driver 종료
    }
    @Test
    public void mainTest() throws Exception{
        System.out.println("테스트");
    }
}

위와 같이 테스트를 완료 했습니다.

다음 포스팅은 크롤링을 하는 방법에 대해서 포스팅을 해보겠습니다.

객체지향 프로그래밍 (Object Oriented Programming)


현실세계의 객체를 필드와 메서드로 정의한 Class를 기반으로 실제 메모리가 잡힌 객체들을 조합해 전체 프로그램을 완성해 나가는 개발 기법

객체지향 프로그래밍의 장단점


1. 장점


  • 코드 재사용이 용이
  • 유지보수가 쉬움
  • 대형 프로젝트에 적합


2. 단점


  • 처리속도가 상대적으로 느림
  • 객체가 많으면 용량이 커질 수 있음
  • 설계 시 많은 시간과 노력이 필요


객체지향 프로그래밍의 특징


1. 캡슐화

  • 어떤 클래스를 사용함에 있어서 그 클래스가 제공하는 메서드 기능의 사용법만 알고 그 기능만을 사용할 뿐 실제로 그 메서드가 어떻게 움직이는지는 굳이 알 필요가 없음


2. 은닉화

  • 외부 객체에서 구현방식은 알 수 없도록 private으로 만들어 클래스를 숨기고 별도로 접근할 수 있는 getter/setter 메서드를 통해 접근하도록 하는 방식
  • 클래스를 사용함에 있어서 속성에 직접 접근하는 것은 데이터 무결성 오류에 치명적일 수 있기 때문에 접근을 제한함


3. 상속

  • 부모 클래스를 자식이 접근할 수 있도록 물려받는 방식


4. 다형성

  • 부모클래스 타입으로 해당 부모를 상속받는 여러 자식 클래스를 대입할 수 있는 성질
  • 단순히 하나의 행동을 여러 가지 형태로 구현하는 것임


'Java > java' 카테고리의 다른 글

[Java] String equals와 == 차이  (0) 2018.07.01

+ Recent posts