목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

Similar documents
Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

슬라이드 1

PowerPoint Presentation

12-file.key

PowerPoint 프레젠테이션

신림프로그래머_클린코드.key

PowerPoint Presentation

자바-11장N'1-502

PowerPoint 프레젠테이션

rmi_박준용_final.PDF

Java

PowerPoint Presentation

07 자바의 다양한 클래스.key

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

gnu-lee-oop-kor-lec11-1-chap15

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

교육자료

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Cluster management software

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Java7.pptx

쉽게 풀어쓴 C 프로그래밊

비긴쿡-자바 00앞부속

PowerPoint 프레젠테이션

FileMaker ODBC and JDBC Guide

FileMaker ODBC and JDBC Guide

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PowerPoint 프레젠테이션

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

歯JavaExceptionHandling.PDF

JUNIT 실습및발표

JMF2_심빈구.PDF

mytalk

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

PowerPoint Presentation

Chap12

Microsoft PowerPoint - [EEL2] Lab10.pptx

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JMF3_심빈구.PDF

Secure Programming Lecture1 : Introduction

PowerPoint Presentation

NoSQL

PowerPoint Presentation

PowerPoint Presentation

Interstage5 SOAP서비스 설정 가이드

gnu-lee-oop-kor-lec06-3-chap7

Java XPath API (한글)

Java ...

자바 프로그래밍

쉽게 풀어쓴 C 프로그래밍

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

4장.문장

Network Programming

ch09

02 C h a p t e r Java

교육2 ? 그림

Design Issues

개발문서 Oracle - Clob

05-class.key

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

PowerPoint Presentation

5장.key

FileMaker ODBC 및 JDBC 가이드

Microsoft PowerPoint - RMI.ppt

PowerPoint Presentation

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Semantic Consistency in Information Exchange

단위업무명

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

C++ Programming

FileMaker 15 ODBC 및 JDBC 설명서

Modern Javascript

슬라이드 1

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

GiGA Genie AI API 서비스가이드 <GiGA Genie AI 영상분석 API> 1 / 33

13-Java Network Programming

14-Servlet

Java Agent Plugin Guide

PowerPoint 프레젠테이션

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

부록부록 1 1. 자바 9의특징 2. 자바 10의특징 3. 이클립스플러그인설치와 Amateras Modeler 사용 4. 외부라이브러리추가와 logback 사용

Transcription:

메신저의새로운혁신 채팅로봇 챗봇 (Chatbot) 입문하기 소 이 메 속 : 시엠아이코리아 름 : 임채문 일 : soulgx@naver.com 1

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공데이터연동실습

JSON?

JSON JSON (JavaScript Object Notation) 은경량의 DATA- 교환형식이다. 이형식은사람이읽고쓰기에용이하며, 기계가분석하고생성함에도용이하다 JSON 은완벽하게언어로부터독립적이지만 C, C++, C#, Java, JavaScript, Python 그외다수의프로그래머들에게친숙한관습을사용하는텍스트형식이다. 이러한속성들이 JSON 을이상적인 DATA- 교환언어로만들고있다. object 는 name/value 쌍들의비순서화된 SET 이다. object 는 { ( 좌중괄호 ) 로시작하고 ( 우중괄호 ) 로끝내어표현한다. 각 name 뒤에 : (colon) 을붙이고, (comma) 로 name/value 쌍들간을구분한다. array 은값들의순서화된 collection 이다. array 는 [ ( 좌대괄호 ) 로시작해서 ] ( 우대괄호 ) 로끝내어표현한다., (comma) 로 array 의값들을구분한다.

JSON

JSONObject public class JsonEx { public static void main(string[] args) { HashMap map = new HashMap(); map.put("message", " 안녕하세요 "); map.put("count", 1); System.out.println(map.toString()); JSONObject obj = new JSONObject(); obj.put("message", " 안녕하세요 "); obj.put("count", 1); System.out.println(obj.toString()); public class JsonEx { public static void main(string[] args) { HashMap map = new HashMap(); map.put("message", " 안녕하세요 "); map.put("count", 1); map.remove( count ); System.out.println(map.toString()); JSONObject obj = new JSONObject(); obj.put("message", " 안녕하세요 "); obj.put("count", 1); obj.remove( count ); System.out.println(obj.toString());

JSONObject public class JsonEx { public static void main(string[] args) { HashMap map = new HashMap(); map.put("message", " 안녕하세요 "); map.put("count", 1); map.remove("count"); map.put("message", " 안녕 "); System.out.println(map.toString()); JSONObject obj = new JSONObject(); obj.put("message", " 안녕하세요 "); obj.put("count", 1); obj.remove("count"); obj.put("message", " 안녕 "); System.out.println(obj.toString()); public class JsonEx { public static void main(string[] args) { HashMap map = new HashMap(); map.put("message", " 안녕하세요 "); map.put("count", 1); Iterator mapi = map.keyset().iterator(); while (mapi.hasnext()) { System.out.println(mapI.next()); JSONObject obj = new JSONObject(); obj.put("message", " 안녕하세요 "); obj.put("count", 1); Iterator obji = obj.keyset().iterator(); while (obji.hasnext()) { System.out.println(objI.next());

JSONObject public class JsonEx { public static void main(string[] args) { HashMap map = new HashMap(); map.put("message", " 안녕하세요 "); map.put("count", 1); System.out.println(map.get("message")); System.out.println("-----------"); JSONObject obj = new JSONObject(); obj.put("message", " 안녕하세요 "); obj.put("count", 1); System.out.println(obj.get("count")); JSONObject 를활용하여아래와같이출력되는문장을작성해주세요.

JSONObject 정답 public class JsonEx { public static void main(string[] args) { JSONObject obj = new JSONObject(); obj.put("type", "text"); JSONObject msg = new JSONObject(); msg.put("content", " 안녕하세요 "); obj.put("message", msg); ()); System.out.println(obj.toString());

public class ArrayEx { public class ArrayEx { JSONArray public static void main(string[] args) { ArrayList list = new ArrayList(); list.add(" 가나다 "); list.add(1); list.add(" 가나다 "); System.out.println(list.toString()); JSONArray array = new JSONArray(); array.put(" 가나다 "); array.put(1); array.put(" 가나다 "); System.out.println(array.toString()); public static void main(string[] args) { ArrayList list = new ArrayList(); list.add(" 가나다 "); list.add(1); list.add(" 가나다 "); list.remove(2); System.out.println(list.toString()); JSONArray array = new JSONArray(); array.put(" 가나다 "); array.put(1); array.put(" 가나다 "); array.remove(2); System.out.println(array.toString());

JSONArray public class ArrayEx { public static void main(string[] args) { ArrayList list = new ArrayList(); list.add(" 가나다 "); list.add(1); list.add(" 가나다 "); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); System.out.println("-----------"); JSONArray array = new JSONArray(); array.put(" 가나다 "); array.put(1); array.put(" 가나다 "); for (int i = 0; i < array.length(); i++) { System.out.println(array.get(i)); JSONObject 및 JSONArray 를활용하여아래와같이출력되는문장을작성해주세요.

JSONArray 정답 public class ArrayEx { public static void main(string[] args) { JSONObject obj = new JSONObject(); obj.put("code", "SUCC"); JSONObject rowdata = new JSONObject(); rowdata.put("data1", " 안녕하세요 "); rowdata.put("data2", " 시엠아이아카데미 "); rowdata.put("data3", " 반갑습니다 "); JSONArray row = new JSONArray(); row.put(rowdata); obj.put("row", row); System.out.println(obj.toString());

서울시공공데이터 API 살펴보기

요청인자살펴보기 API Address : http://data.seoul.go.kr/openinf/openapiview.jsp?infid=oa-12252 http://openapi.seoul.go.kr:8088/key/type/service/start_index/end_index/use_mon/line_num/sub_sta_nm http://openapi.seoul.go.kr:8088/744d615a52736f7534394a64775844/json/cardsubwaytime/1/5/201601/5 호선 / 김포공항

Result Code 살펴보기

출력값살펴보기..

출력값살펴보기 { "CardSubwayTime": { "list_total_count": 1, "RESULT": { "CODE": "INFO-000, "MESSAGE": " 정상처리되었습니다 ", "row": [ { "USE_MON": "201601, "LINE_NUM": "5호선", "SUB_STA_NM": " 김포공항 ", "FOUR_RIDE_NUM": 2.0, "FOUR_ALIGHT_NUM": 0.0, "FIVE_RIDE_NUM": 424.0, "FIVE_ALIGHT_NUM": 2039.0, "SIX_RIDE_NUM": 1829.0, "SIX_ALIGHT_NUM": 6952.0, "SEVEN_RIDE_NUM": 5508.0, "SEVEN_ALIGHT_NUM": 13368.0, "EIGHT_RIDE_NUM": 7220.0, "EIGHT_ALIGHT_NUM": 14183.0, "NINE_RIDE_NUM": 7224.0, "NINE_ALIGHT_NUM": 11874.0, "TEN_RIDE_NUM": 5871.0, "TEN_ALIGHT_NUM": 10955.0, "ELEVEN_RIDE_NUM": 8543.0, "ELEVEN_ALIGHT_NUM": 13339.0, "TWELVE_RIDE_NUM": 10385.0, "TWELVE_ALIGHT_NUM": 14501.0, "THIRTEEN_RIDE_NUM": 12137.0, "THIRTEEN_ALIGHT_NUM": 15412.0, "FOURTEEN_RIDE_NUM": 13583.0, "FOURTEEN_ALIGHT_NUM": 15807.0, "FIFTEEN_RIDE_NUM": 16540.0, "FIFTEEN_ALIGHT_NUM": 14553.0, "SIXTEEN_RIDE_NUM": 17284.0, "SIXTEEN_ALIGHT_NUM": 13875.0, "SEVENTEEN_RIDE_NUM": 19261.0, "SEVENTEEN_ALIGHT_NUM": 14616.0, "EIGHTEEN_RIDE_NUM": 25332.0, "EIGHTEEN_ALIGHT_NUM": 14499.0, "NINETEEN_RIDE_NUM": 20857.0, "NINETEEN_ALIGHT_NUM": 10527.0, "TWENTY_RIDE_NUM": 17511.0, "TWENTY_ALIGHT_NUM": 5139.0, "TWENTY_ONE_RIDE_NUM": 13897.0, "TWENTY_ONE_ALIGHT_NUM": 2925.0, "TWENTY_TWO_RIDE_NUM": 14336.0, "TWENTY_TWO_ALIGHT_NUM": 1982.0, "TWENTY_THREE_RIDE_NUM": 5653.0, "TWENTY_THREE_ALIGHT_NUM": 900.0, "MIDNIGHT_RIDE_NUM": 423.0, "MIDNIGHT_ALIGHT_NUM": 349.0, "ONE_RIDE_NUM": 0.0, "ONE_ALIGHT_NUM": 1.0, "TWO_RIDE_NUM": 0.0, "TWO_ALIGHT_NUM": 0.0, "THREE_RIDE_NUM": 0.0, "THREE_ALIGHT_NUM": 0.0, "WORK_DT": "20160208" ] http://jsonviewer.stack.hu http://openapi.seoul.go.kr:8088/744d615a52736f7534394a64775844/json/cardsubwaytime/1/5/201601/5호선 / 김포공항

HttpClient

HttpHelper 클래스작성 public class HttpHelper { public InputStream getwebdata(string url) { // 접속대기에대한제한시간 --> 밀리세컨드단위 int timeout = 30000; // 접속을하기위한기본환경설정객체 HttpParams params = new BasicHttpParams(); // 프로토콜버전설정 params.setparameter(coreprotocolpnames.protocol_version, HttpVersion.HTTP_1_1); // 요청제한시간 HttpConnectionParams.setConnectionTimeout(params, timeout); // 응답제한시간 HttpConnectionParams.setSoTimeout(params, timeout); // 통신에사용할인코딩값설정 HttpProtocolParams.setContentCharset(params, "UTF-8"); // 접속기능을하는통신객체생성 HttpClient client = new DefaultHttpClient(params); // 응답결과가저장될객체 InputStream is = null; // 통신에필요한요청정보설정 --> URL 을주소표시줄에입력하기 HttpGet httpget = new HttpGet(url);..

HttpHelper 클래스작성.. try { // 요청을보낸후, 응답받기 HttpResponse response = client.execute(httpget); // 웹서버의응답결과코드받기 int resultcode = response.getstatusline().getstatuscode(); // 서버응답이정상일경우에만처리 if (resultcode == HttpURLConnection.HTTP_OK) { // 수신된응답에서실데이터추출 BufferedHttpEntity buffer = new BufferedHttpEntity(response.getEntity()); // 추출한데이터를 InputStream으로변환 is = buffer.getcontent(); catch (IOException e) { e.printstacktrace(); finally { // 통신해제 if (client!= null) client.getconnectionmanager().shutdown(); // 통신결과리턴 return is;

JsonParser 클래스작성 public class JsonParser { public JSONObject getjsonobject(inputstream is) { // 결과객체 JSONObject json = null; // 문자형읽는 BufferedReader 객체 BufferedReader reader = null; // 임시변수 String line = null; // BufferedReader 에서읽은내용을저장하는 StringBuffer 객체생성 StringBuilder sb = new StringBuilder(); try { // BufferedReader 객체생성 reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); // 반복문을통해 BufferedReader 에서내용끝까지읽기 while ((line = reader.readline())!= null) { // 읽어들인내용을 StringBuffer 에추가 sb.append(line +"\n"); // 결과객체생성 json = new JSONObject(sb.toString()); catch(exception e) { e.printstacktrace(); // 자원반납 finally { try { if (reader!= null) reader.close(); if (is!= null) is.close(); catch (Exception e) { e.printstacktrace(); return json;

공공데이터 연동실습

공공데이터연동실습 public class DataTestMain { public static void main(string[] args) throws UnsupportedEncodingException { HttpHelper http = new HttpHelper(); StringBuffer url = new StringBuffer(); url.append("http://openapi.seoul.go.kr:8088/744d615a52736f7534394a64775844/json/cardsubwaytime/1/5"); String[] param = {"201601", "5 호선 ", " 김포공항 "; for (int i = 0; i < param.length; i++) { url.append("/"+urlencoder.encode(param[i], "UTF-8")); InputStream is = http.getwebdata(url.tostring()); if (is == null) { System.out.println(" 공공데이터조회도중오류가발생하였습니다."); return ; JsonParser jp = new JsonParser(); JSONObject obj = jp.getjsonobject(is); JSONObject cardsubwaytime = (JSONObject) obj.get("cardsubwaytime"); if (cardsubwaytime.getjsonobject("result").get("code").equals("info-000")) { int count = cardsubwaytime.getjsonarray("row").getjsonobject(0).getint("eight_alight_num"); System.out.println("08 시 -09 시하차인원 : " + count); else if (cardsubwaytime.getjsonobject("result").get("code").equals("info-200")) { System.out.println(" 조회된데이터가없습니다."); else { System.out.println(" 오류가발생하였습니다.");

감사합니다