웹서버 iis (wcf 서버)와 안드로이드가 통신하는 앱을 만들고 있다.
근데 json이 이상한 데이터 형식으로 넘어오는 것이었다.
큰따옴표가 붙어서 왔다.
({\"Table\":[{\"Column1\":\"OK\"}],\"Table1\":...) 이런식
찾아보니 iis에서 json값을 줄때, "따옴표를 \" 이런식으로 값을 줬다.
데이터 형식을 이스케이프(escape)로 준거였다.
[참고] 이스케이프 설명
escape - 생활코딩
요약(Summary) URI로 데이터를 전달하기 위해서 문자열을 인코딩 문법(Syntax) escape(string) 인자(Parameters) 인자명 데이터형 필수/옵션 설명 string string 필수 인코딩할 문자열 반환값(Return) string, 인코딩된 문자열을 반환 설명(Description) 웹을 통해서 데이터를 전송할 때 특정 문자들은 특수한 기능으로 사용된다. 예를들어, http://a.com?name=egoing&job=progra
opentutorials.org
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 는 이스케이프 문자열.
[적용후]
이제 json이 제대로 출력된다.
'플랫폼 > 안드로이드 android' 카테고리의 다른 글
안드로이드 apk 생성 하기 (0) | 2019.06.12 |
---|---|
안드로이드 생명주기 (0) | 2019.06.12 |
안드로이드 앱 실행 구조 (apk 와 패키지) (0) | 2019.06.12 |
안드로이드 arrayList 를 Json으로 변환 / jsonarry (0) | 2019.05.22 |
[안드로이드] 클릭 리스너 (2가지) (0) | 2018.12.27 |
댓글