안드로이드 unescape /escape [StringEscapeUtils로 해결]

by 조쉬 posted Mar 29, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

웹서버 iis (wcf 서버)와 안드로이드가 통신하는 앱을 만들고 있다.

 

 

근데 json이 이상한 데이터 형식으로 넘어오는 것이었다. 

큰따옴표가 붙어서 왔다.

({\"Table\":[{\"Column1\":\"OK\"}],\"Table1\":...) 이런식

 

 

찾아보니 iis에서 json값을 줄때, "따옴표를 \" 이런식으로 값을 줬다.

데이터 형식을 이스케이프(escape)로 준거였다.

 

 

wcf서버에서 이스케이프를 풀려고 갖은 방법을 해봐도 안풀렸다.

(이유는 wcf서버에서 이스케이프 형식을 강제해놓은 것 같다)

 

서버에서 이스케이프를 해독하여 보내는 방법은 포기하고,

안드로이드로 넘어와서 이스케이프를 해독(unescape) 해주려고 방법을 찾았다.

 

많은 시도 끝에 결국 아파치 라이브러리에 StringEscapeUtils 클래스의 unescapeJava 메소드를 써주니 해결됐다.

 

[적용방법]

 

1. gradle 에 아파치 라이브러리 추가. ( implementation 'org.apache.commons:commons-lang3:3.6'  추가)

 

implementation 'org.apache.commons:commons-lang3:3.6'

 

 

예시

 

 

2. StringEscapeUtils 클래스의 unescapeJava 메소드를 사용한다.

 

String test = StringEscapeUtils.unescapeJava(escape);

 //escape 는 이스케이프 문자열.

 

 

 

예시

 

 

 

[적용후]

 

s 가 escape 문자열 test가 unescape적용후

 

이제 json이 제대로 출력된다.

 


Articles

1 2 3 4 5 6 7 8 9 10