Advertisement
Guest User

Untitled

a guest
May 2nd, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. {
  2. a0: {b0: c0},
  3. a1: b1,
  4. a2: {b2: {c1: d0, c2: d1}}
  5. }
  6. 이런 형태의 JSON 을 보내야 하고, 입력 form을 다음과 같이 설정하였을 때 사용하기 위한 코드이다.
  7. <input id="a0.b0">
  8. <input id="a1">
  9. <input id="a2.b2.c1">
  10. <input id="a2.b2.c2">
  11. 현재 구현은 2중첩 까지만 가능하도록 되어 있고, 최종 목표는 무제한까지 가능하도록 하는 것이다.
  12.  
  13.  
  14. for (var param in params) {
  15. if (param.indexOf(".") != -1) {
  16. // 하위 항목이 있는 parameter
  17. // dot 을 기준으로 앞은 상위, 뒤는 하위 parameter이다.
  18. // 상위 parameter가 이미 존재할 경우 하위 parameter가 있는 map 에 새로 추가한다.
  19. // dot 은 최대 둘만 있다고 가정한다.
  20. // parent.child.baby = value
  21. // ==> {parent: {child: {baby: value}}}
  22. // 현재 구현은 dot 이 하나 포함되었을때만 정상
  23. var parent = param.split(".")[0];
  24. var child = param.split(".")[1];
  25. var baby = param.split(".")[2];
  26. if (query[parent] !== undefined) { // 이미 어떤 값이 들어 있을 때
  27. var origin = query[parent];
  28. origin[child] = encodeURI(params[param]);
  29.  
  30. if (baby !== undefined) {
  31. console.log(origin);
  32. /*
  33. var innerKV = {};
  34. console.log(baby);
  35. innerKV[baby] = encodeURI(params[param]);
  36. origin[child] = innerKV;
  37. */
  38. }
  39. query[parent] = origin;
  40. }
  41. else { // 처음 값이 들어갈 때
  42. var newKV = {};
  43. newKV[child] = encodeURI(params[param]);
  44. if (baby !== undefined) {
  45. console.log(newKV);
  46. var innerKV = {};
  47. innerKV[baby] = encodeURI(params[param]);
  48. newKV[child] = innerKV;
  49. }
  50. query[parent] = newKV;
  51. }
  52. }
  53. else {
  54. // 단순 parameter
  55. // 처리할 필요 없이 바로 query[param]에 넣어주면 된다.
  56. query[param] = encodeURI(params[param]);
  57. }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement