반응형

 

1편에서 Spring Boot에서 데이터를 JSON형식으로 표현하는 가장 기본적인 방법인 클래스를 이용한 방법을 배웠다.

이번에는 Gson을 이용한 JsonOjbect to String, String to JsonObject를 알아아보자.

 

개인적인 경험으론 Gson이 가장 Json파싱에서 핵심이 아닐까 생각한다.

 

 

Spring boot Json 1편, 3편, 4편, 마지막

1. 2018/11/06 - [Spring Boot] - Spring Boot Json, JsonObject로 만들기 - JSON 1편

2 .2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

3. 2018/11/12 - [Develop/Spring Boot] - Spring Boot Deserialization Json, Deserialization JsonString to JsonObject - Json 4편

4. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막

 

 

번외 Database의 값을 Json으로 select하는 방법.

1. 2018/10/24 - [Spring Boot] - Spring boot jpa map, hashmap, JSON형식

2. 2018/10/28 - [Spring Boot] - Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하기

 

Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기

 

 

 

1. 먼저 pom.xml에 의존성을 추가한다.

 

 		com.google.code.gson 		gson 		2.8.5  

 

2. Gson을 이용한 Json 생성

 

public String test3() { 		 		Gson gson = new Gson(); 		JsonObject obj = new JsonObject(); 		String id=null; 		obj.addProperty("id", id); 		obj.addProperty("pass", 1234); 		 		String i = obj.toString(); 		String j = gson.toJson(obj); 		System.out.println(i); 		System.out.println(j); 		return i; } 

 

Gson의 JsonObject를 Import받고 JsonObject를 이용하여 Json 형식으로 만들었다.

위의 toString()으로 호출한 결과와 gson.toJson()을 이용한 결과가 다르다는 걸 볼 수 있다.

아래의 gson.toJson()을 이용하면 null값이 들어올 경우 키값이 사라져 버린다.

 

3. String to JsonObject

 

public void test3() { 		 		Gson gson = new Gson(); 		String json = "{\"id\": 1, \"password\": \"1234\"}";  		TestDTO test = gson.fromJson(json, TestDTO.class); 		System.out.println(test.getId()); 		System.out.println(test.getPassword()); 		 } 

 

1편에서 사용한 TestDTO를 통해 Json객체를 생성할 수 있다.

반응형

4.  객체를 Json으로 만들기

 

	public void test3() { 		 		Gson gson = new Gson(); 		TestDTO test2 = new TestDTO(); 		test2.setId(2); 		test2.setPassword("2222"); 		String i=gson.toJson(test2); 		System.out.println(i); 	} 

 

5.  Gson의 JsonParser와 JsonElement를 통한 JsonParsing

 

	public void test3() { 		 		String json = "{\"id\": 1, \"password\": \"1234\"}"; 		JsonParser jp = new JsonParser(); 		JsonElement je = jp.parse(json); 		int id = je.getAsJsonObject().get("id").getAsInt(); 		String pass = je.getAsJsonObject().get("password").getAsString(); 		System.out.println(id + " / " + pass); 	} 

 

6. Gson을 이용하여 Class의 toString() 을 이용한 Json 생성

 

1편의 TestDTO클래스에 Gson을 이용한 toString() 으로 보다 빠르고 편리하게 Json을 생성할 수 있다.

 

import com.google.gson.Gson;  public class TestDTO {  	private Integer id; 	private String password; 	 	 	public TestDTO() { 		super(); 	} 	public TestDTO(Integer id, String password) { 		super(); 		this.id = id; 		this.password = password; 	} 	public Integer getId() { 		return id; 	} 	public void setId(Integer id) { 		this.id = id; 	} 	public String getPassword() { 		return password; 	} 	public void setPassword(String password) { 		this.password = password; 	} 	 	@Override 	public String toString() { 		return new Gson().toJson(this); 	} }  	public void test3() {  		Gson gson = new Gson(); 		TestDTO test2 = new TestDTO(); 		test2.setId(2); 		test2.setPassword("2222"); 		String json = test2.toString(); 		System.out.println(json); 	} 

 

7. 기타

 

이외에도 Json 예쁘게 출력하는 방법 등 여러가지 기능이 존재한다.

 

 

Gson가이드 - https://github.com/google/gson/blob/master/UserGuide.md

 

반응형
반응형

 

Spring Boot에서 데이터를 JSON형식으로 표현하는 가장 기본적인 방법으로는 클래스를 이용하는 방법이다.

이 방법을 알아야 다음에 Deserialization한 JSON을 만들 수 있다.

 

Spring boot Json 2편, 3편, 4편, 마지막

1. 2018/11/07 - [Develop/Spring Boot] - Spring Boot Json, Gson을 이용한 JsonObject to String, String to JsonObject- JSON 2편

2. 2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

3. 2018/11/12 - [Develop/Spring Boot] - Spring Boot Deserialization Json, Deserialization JsonString to JsonObject - Json 4편

4. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막

 

번외 Database의 값을 Json으로 select하는 방법.

1. 2018/10/24 - [Spring Boot] - Spring boot jpa map, hashmap, JSON형식

2. 2018/10/28 - [Spring Boot] - Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하기

 

Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기

 

 

 

먼저 DTO를 생성한다.

public class TestDTO {  	private Integer id; 	private String password; 	 	 	public TestDTO() { 		super(); 	} 	public TestDTO(Integer id, String password) { 		super(); 		this.id = id; 		this.password = password; 	} 	public Integer getId() { 		return id; 	} 	public void setId(Integer id) { 		this.id = id; 	} 	public String getPassword() { 		return password; 	} 	public void setPassword(String password) { 		this.password = password; 	} 	 } 

다음 컨트롤러를 하나 생성해준다.

@RestController @RequestMapping(value = "/jsontest") public class TestClass { 	 	@GetMapping() 	public TestDTO test() { 		TestDTO test = new TestDTO(1, "1111"); 		return test; 	} 	 	@GetMapping("/2") 	public List test2() { 		List test = new ArrayList(); 		test.add(0, new TestDTO(1, "1111")); 		test.add(1, new TestDTO(2, "2222")); 		test.add(2, new TestDTO(3, "3333")); 		return test; 	} }
반응형

그리고 실행하게 되면

 

1. test() 실행화면

 

2. test2() 실행화면

 

이렇게 Json 형태로 출력된다

참고로 Map은 Json형태로 출력되지 않고 {"id" = 1, "password"="1111"} 형식으로 출력된다. List만 Json형식으로 출력된다.

또한, 이렇게 클래스로 만든 JsonObject는 Return할 때만 Json으로 출력되지, log또는 print할 경우엔 Json형식으로 출력되지 않는다.

Json형식으로 출력되게 하려면 다음에 할 2편을 참고.

 

기초는 마무리.

 

반응형
반응형


파이썬에서 beautiful soup과 같은 기능을하는 Jsoup라는 것이 있다.

Html을 파싱하는 것이고




	org.jsoup
	jsoup
	1.11.3

xml에 dependency를 추가하고



Jsoup.parse("내용").body().text();

이렇게 사용하면 각종 html코드들을 삭제한 순수 text들이 파싱된다.


기타 사용법은 라이브러리 사이트에서 확인할 수 있다

https://jsoup.org/


반응형
반응형

Python 3.7 버전을 사용하고 있는 도중 Sqlite3 를 사용하게 되었는 데, Parameterized Query(매개변수 쿼리)를 사용하는 도중


sql = "SELECT name FROM test WHERE id=?"
self.cur.execute(sql, (100))

ValueError: parameters are of unsupported type


이런 오류가 발생하였다.

레퍼런스를 찾아보니 https://docs.python.org/2/library/sqlite3.html

아래와 같이 사용해야 된다.

sql = "SELECT name FROM test WHERE id=?"
self.cur.execute(sql, (100,))


반응형
반응형

 

slacker를 이용한 파이썬 슬랙 봇을 만드는 방법이다. 순수하게 메세지만 보낼 예정이라면 아래의 웹훅을 추천한다.(봇을 이용하면 슬랙이 무거워짐),

슬랙에 봇을 추가 및 만드는 방법은 아래의 slackclient를 이용한 파이썬 슬랙봇 만들기에 나와있다.

 

- 파이썬 웹훅으로 만들기

2018/11/03 - [Python] - Python Slack WebHook (파이썬 슬랙 웹훅) 만들기

 

- slackclient를 이용한 파이썬 슬랙봇 만들기

2018/11/03 - [Python] - Python Slack Bot (파이썬 슬랙 봇) - slackclient

2018/11/08 - [Develop/Python] - Python Slack Lunch Bot - 점심 알리미 봇

 

- Node.js Webhooks

2019/05/03 - [Develop/Node.js] - [Node.js] Node.js Slack WebHooks (슬랙 웹훅)

 

 

- Spring boot Webhook (Java Webhook)

2018/11/24 - [Develop/Spring Boot] - Spring boot Slack WebHook. 슬랙 웹훅(Java Slack WebHook)

 

 

1. slacker를 설치한다.

 

pip install slacker

 

 

2. 토큰을 발급받는다.

 

반응형
from slacker import Slacker  slack_token = '토큰'  #위에 발급받은 토큰을 적으면 됨. slack = Slacker(slack_token) slack.chat.post_message('#channel', '메세지') #채널자리에 슬랙에 있는 채널을 적으면 됨. 

 

위 소스를 실행하면 알아서 메세지가 잘 전달된다.

 

메세지를 예쁘게 보내고 싶으면

slack api 문서 - https://api.slack.com/docs/message-attachments 문서에서 attachments라고 나와 있는 것을 딕셔너리를 이용하여 보내면 된다.

 

dic = {"title": "Slack API Documentation", "color" : "#2eb886" }  attachments = [dic]  slack.chat.post_message('#channel', '메세지', attachments=attachments) #채널자리에 슬랙에 있는 채널을 적으면 됨. 

 

반응형
반응형

 

slackclient를 이용한 파이썬 슬랙 봇을 만드는 방법이다. 

순수하게 메세지만 보내고 싶다면 아래의 파이썬 웹훅 게시글을 보면되고

 

slackclient의 메세지를 예쁘게 보내고 싶다면 이 글을 보고 아래의 slacker로 파이썬 슬랙 봇 만들기를 보면 된다.

 

- 파이썬 웹훅으로 만들기.

2018/11/03 - [Python] - Python Slack WebHook (파이썬 슬랙 웹훅) 만들기

 

- 파이썬 slacker로 파이썬 슬랙 봇 만들기

2018/11/03 - [Python] - Python Slack Bot (파이썬 슬랙 봇) - slacker

2018/11/08 - [Develop/Python] - Python Slack Lunch Bot - 점심 알리미 봇

 

- Node.js Webhooks

2019/05/03 - [Develop/Node.js] - [Node.js] Node.js Slack WebHooks (슬랙 웹훅)

 

- Spring boot Webhook (Java Webhook)

2018/11/24 - [Develop/Spring Boot] - Spring boot Slack WebHook. 슬랙 웹훅(Java Slack WebHook)

 

 

1. https://api.slack.com 에 접속한 뒤, Your Apps에 들어간다.

 

 

 

2. Your Apps에 접속하면 아래와 같은 창이 바로 보이며, Create an App을 클릭한다.

 

 

 

3. 이름을 짓고 사용할 워크스페이스를 고른다.

 

 

4. BotUser를 등록한다.

 

 

 

5. 왼쪽의 OAuth & Permissions에 들어가서 bot을 install workspace를 하게되면 OAuth Token을 발급받게 되고 봇이 Slack에 추가된다.

그리고 Bot User OAuth Access Token을 복사한다.

 

 

 

 

반응형

 

6. Slack에서 봇을 사용할 채널에 /invite 명령어로 봇을 추가한다.

 

7. https://api.slack.com/tutorials/tags/python 사이트에 접속해서 사용 방법을 터득 하면되며,

대표적으로 How to Build Your First Slack Bot with Python(https://www.fullstackpython.com/blog/build-first-slack-bot-python.html)에 접속한다.

(소스 파일 : https://github.com/mattmakai/slack-starterbot/blob/master/starterbot.py)

 

소스를 대충 설명하자면, 

 

 

 

# instantiate Slack client slack_client = SlackClient(os.environ.get('SLACK_BOT_TOKEN')) #os.environ.get부분을 다 지우고 아까 복사한 token을 붙여넣는다. # starterbot's user ID in Slack: value is assigned after the bot starts up starterbot_id = None #----------------------------------- def handle_command(command, channel): #이 메소드에서 슬랙에서 받은 메세지를 처리한다. #----------------------------------- while True: command, channel = parse_bot_commands(slack_client.rtm_read()) if command: handle_command(command, channel) time.sleep(RTM_READ_DELAY) #TCP통신처럼 여기서 메세지 받는 것을 대기한다.

 

튜토리얼에서 워낙 잘 나와 있기 때문에 이해하기가 쉬우며 사용 또한 편리하다.

 

코드 및 사용방법 출저 : https://api.slack.com/tutorials/tags/python - How to Build Your First Slack Bot with Python(https://www.fullstackpython.com/blog/build-first-slack-bot-python.html)

반응형
반응형

 

 

파이썬으로 슬랙에 메세지를 보낼 수 있는 방법 중 하나인 웹훅(webhook)을 사용하는 방법이다. 

 

- Spring boot Webhook (Java Webhook)

2018/11/24 - [Develop/Spring Boot] - Spring boot Slack WebHook. 슬랙 웹훅(Java Slack WebHook)

 

- Pyhton Slack Bot

2018/11/03 - [Develop/Python] - Python Slack Bot (파이썬 슬랙 봇) - slackclient

2018/11/03 - [Develop/Python] - Python Slack Bot (파이썬 슬랙 봇) - slacker

2018/11/08 - [Develop/Python] - Python Slack Lunch Bot - 점심 알리미 봇

 

- Node.js Webhooks

2019/05/03 - [Develop/Node.js] - [Node.js] Node.js Slack WebHooks (슬랙 웹훅)

 

 

1. Apps 옆의 + 를 누른다.

 

 

2. View App Directory.

 

 

반응형

3. incoming webhooks을 검색 하고 Add한다.

 

 

 

4. 메세지를 보낼 채널을 선택한다.

 

 

5. 아래의 Webhook URL을 복사한다. 그 밑에는 웹훅 사용법이 적혀있다.

 

 

 

6. 파이썬에 아래의 코드를 사용하여 보낸다.

 

requests.post 함수와 Json형태의 메세지를 통해 보낸다.

import json import requests   def main():      webhook_url = "복사한 url"     content = "WebHook Test"     payload = {"text": content}      requests.post(         webhook_url, data=json.dumps(payload),         headers={'Content-Type': 'application/json'}     )   if __name__ == '__main__':     main() 

 

 

7. 결과

 

 

반응형
반응형


파이썬 의존성 라이브러리 관리를 위한 requirements.txt 추가.

터미널에 아래와 같이 치면 된다.


pip freeze > requirements.txt


반응형
반응형

Spring Boot 에서 TimeZone 설정하려면 아래와 같이 @PostConStruct를 설정해주면 된다.

 

 @SpringBootApplication public class Application {  	@PostConstruct 	void started() { 		TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul")); 	}  	public static void main(String[] args) { 		SpringApplication.run(Application.class, args);  	}  } 
반응형

UTC를 원한다면 TimeZone.getTimeZone("UTC")라고 하면 된다.

 

시간을 KST로 설정하고싶어서 TimeZone.getTimeZone("KST")라고 계속 했는데 안되서 삽질한 경험이 있다. KST라고하면 안되고

한국 시간 설정은 Asia/Seoul로 설정해주면 된다.

 

그 외 example timezone offset은 아래의 사이트에서 확인할 수 있다.

https://docs.oracle.com/javase/tutorial/datetime/iso/timezones.html

반응형
반응형


쿼리 작업할 때 count라는 컬럼을 업데이트 해줘야 하는 일이 발생했는데 아래와 같이 하면 자꾸 에러가 발생하였다.

update Test set count=?1 where id=?2


오랜 삽질 끝에, 혹시나 count가 mysql에서 예약어로 사용되고 있어서 그런가 하는 생각에 아래와 같이 바꿔보니 성공하였다.
 

update Test t set t.count=?1 where t.id=?2


앞으로 컬럼의 이름과 MySQL의 예약어가 겹치는 게 있는지 주의하자.

반응형

+ Recent posts