Jackson API 참고
https://javadocs.com/docs/com.ovea/jetty-session-redis/1.0/org/codehaus/jackson/map/ObjectMapper.java
Json : 데이터를 넘기는 역할
Jackson : binding 해주는 / objectMapper 제공
< build.gradle >
compile 'org.json:json:20160212'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
jackson
readTree : 계층구조의 json Data를 Mapping
Object를 Map으로 변환 할 때에는 PropertyUtils를 사용 / Map에서 Object로 변활 할 때에는 BeanUtils 를 사용
Map to VO Binding
Controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | public Block addJsonBlockPOST(@RequestBody Map map) throws Exception { System.out.println("(/block/blockSave)RequestBody로 전달받은 String(JSON) : "+map); String keyAttribute = null; String setMethodString = "set"; String methodString = null; Block test= new Block(); Iterator itr = map.keySet().iterator(); // 1. Map의 method // keySet() return type : Set<K> // Returns a Set view of the keys contained in this map. // 2. Set 의 method // iterator() return type: Interator<E> // Returns an iterator over the elements in this set. while(itr.hasNext()){ // 3. Interator의 method // hasNext() return boolean // Returns true if the iteration has more elements. keyAttribute = (String) itr.next(); methodString = setMethodString+keyAttribute.substring(0,1).toUpperCase() +keyAttribute.substring(1); // ex Emotion이면 //set +E+motion -> setEmotion을 불러오기 Method[] methods = test.getClass().getDeclaredMethods(); //BlockVO에 있는 method 가져오기 // 4. Class의 method // getDeclaredMethods() return type Method[] // Returns an array containing Method objects reflecting // all the declared methods of the class or interface represented by this Class object, // including public, protected, default (package) access, and private methods, // but excluding inherited methods. for(int i=0;i<=methods.length-1;i++){ if(methodString.equals(methods[i].getName())){ System.out.println("Method[] : "+methods[i]); System.out.println("invoke : "+methodString); methods[i].invoke(test, map.get(keyAttribute)); // 5. Method[] 의 method // invoke(Object obj, Object... args) // Invokes the underlying method represented by this Method object, // on the specified object with the specified parameters. } } } // 1. Map의 key만큼 Loop를 돌며+key값의 첫번째 글자를 대문자로 바꾼다.(보통 name이라는 필드가 있다면 set메소드는 setName 이니까) // 2. 넘긴 POJO의 선언된 Method를 가져와서 우리가 필요한(set할) 메소드를 찾는당 // 3. 메소드 실행하며 값을 넘겨준다~ (invoke) System.out.println(test); System.out.println("----------------Test종료--------------"); System.out.println("----------------Test종료--------------"); System.out.println("----------------Test종료--------------"); System.out.println("----------------Test종료--------------"); | cs |
html에서 넘겨주는 data
blockEmotionList: dummyEmotion
, note: dummyNote
, blockHashList: dummyHashCodes
반응형
'JAVA' 카테고리의 다른 글
JAVA SWING 링크 정리 (0) | 2016.12.06 |
---|---|
Design Pattern (0) | 2016.04.22 |
[openAPI] openAPI 사용하기 (0) | 2016.04.06 |
[BOWER] bower 설치 (0) | 2016.04.05 |
정리해야할 것 (0) | 2016.03.23 |