Spring으로 작업을 진행 하던 중,

java.io.NullPointException !!!!!

아아... System.out.println("Hello Null _._+");

 

Error Log를 확인 했더니

ObjectMapper 에서 Error 가 두둥...

 

언제나처럼 구글링을 통해 알아보던 중,

(즐겨찾기 해놨는데 어디있는지 까먹어서 그러는거 절대 아닙니다 ! ! !)

 

ObjectMapper 클래스의 readValue() 메서드를 사용할 때 json Data를

자동으로 Decode 해주는 문구를 봤던 기억이...

(아니면 ObjectMapper 에서 JsonFactory로 넘겨주고 JsonFactory에서 decode 해주던가...? 까먹었어요... ㅠㅠ)

 

아무튼!

그러한 이유로 Client에서 parameter 값을 하나하나 encode 해주기에는 비효율적이고 번거로워서

parameter로 넘기기 직전! encode 해주는 방식으로 변경해 보니!

 

두둥!

정상적으로 Error 없이 작동하더군요.!

 

parameter로 넘기기 전에!

parameter로 만들기 전에!

다음은 그 예제입니다.

 

// JSONArray에 Data가 있다고 가정하겠습니다.
// JSONArray 변수는 jArrObj 라고 가정합니다.

var param = "test_data=" + encodeURIComponent(JSON.stringify(jArrObj));

 

저렇게 해주니 깔끔하게 잘 되더라구요!

 

encodeURIComponent(); 를 예전에 사용했었는데,

그 때는 jArrObj 에 들어가는 Data들 중 일부만 encodeURIComponent();를 사용해 진행했었고,

해당 메서드가 encode 해준다고만 알고 넘어갔었는데,

이번에 작업을 진행하다 보니 해당 메서드랑 그 외의 메서드들에 대해서 조금 더 자세히 알게되었고,

프로그래밍 로직을 작성하는 것도 아직도 많이 부족하다는 것을 알 수 있는 좋은 경험이 되었습니다.!

 

다음은 구글링을 토대로 확인 할 수 있는 character escape와 관련된 encode 메서드들과 간략한 기능에 대한 설명입니다.

 

메서드 기능
escape() 지금은 사용되지 않는다길래 패스 했습니다...
encodeURI()

:,/,= 등 거의 모든 문자를 encode하는 메서드라고 합니다.

주로 URI를 통째로 encode 할 때 쓴다고 합니다.

(그런 경우가 자주 있나요...? 잘 몰라서요 ㅎㅎ..;;;;;;;;;;;;

염치 없지만 알려주시면 감사하겠습니다!!!!!)

encodeURIComponent()

encodeURI() 보다 적은 수의 문자를 encode 하는 메서드라고 합니다.

encodeURI()에서 적용된 :,/,= 등은 encode가 되지 않는다고 합니다.

 

주로 Parameter 를 encode 할 때 쓴 다고 합니다.

 

네.

구글링 하면 다 나오더라구요.

 

이미 많이 있는 내용이지만 기록하기 위해서 ㅎㅎ....

 

출처는... 죄송해요... 검색하면 너무 많이 나와서 어디서 봤는지 기억조차 나지 않습니다...

(변명... 진심인데... ㅠㅠ 앞으로 까먹지 않을게요 !!!)

+ Recent posts