본문 바로가기
└ Java Script

[Java Script / Json] Json 항목 변경하기

by 짜장이누나 2014. 5. 14.



Today's mission.

Json의 특정 항목을 찾아 값 바꾸기


>> Json 객체

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
[
    {
        "title":"New event",
        "fromDate":"2014-05-14 17:00:00",
        "toDate":"2014-05-14 17:30:00",
        "name":"일용엄니",
        "color":"typeA",
        "id":"def012345"
    },
    {
        "title":"New event",
        "fromDate":"2014-05-14 17:00:00",
        "toDate":"2014-05-14 17:30:00",
        "name":"이용엄니",
        "color":"typeB",
        "id":"abc012345"
    },
    {
        "title":"New event",
        "fromDate":"2014-05-14 17:00:00",
        "toDate":"2014-05-14 17:30:00",
        "name":"삼용엄니",
        "color":"typeC",
        "id":"ghi012345"
    }
]
cs


여기서 type[A~Z]인 color 값을 cat[01~23] 형태로 바꿔보려고 한다.


1. 'A' -> 1  로 변환

'A'의 아스키(ASCII)코드 값은 65이다. 아스키 코드값에서 64를 빼면 1이 되지 않을까?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * type[A-Z]를 cat[01~23]로 변환
 * @param type {String} type[A-Z] 형식의 문자열
 * @returns cat[01~23]
 */
function convertASCII(type) {
    
    // 'type([A-Z]' 에서 [A~Z]분리하는 정규식
    var _string = type.match(/type([A-Z])/);
    
    // ASCII code로 변환 후 64 빼기
    var _cnvASCII = _string[1].charCodeAt() - 64;
    
    // 'cat[01~23]' 형태로 변환
    var _cmpString = 'cat' + ('0' + _cnvASCII).slice(-2);
    
    return _cmpString;
}
cs


* match(/type([A-Z])/)  정규식을 사용하면 아래와 같이 배열 형태로 나온다.



2. Json의 color 항목 변경

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * calendarList 에서 color 값만 변경시키기
 * @param calendarList {Array} 캘린더 리스트
 */
function refineCalendarList(calendarList) {
    
    // for 문 돌아서 calendar 객체에 userdefinecolor 를 이용하여 catClassName 설정한다. 
    for(var i=0; i<calendarList.length; i++) {
        
        var _calendar = calendarList[i];
        
        // color 항목에 접근
        _calendar.catClassName = convertASCII(_calendar.color);
 
    }
}
cs


결과는 어짜피 클래스 이므로 return 해주지 않아도 된다.




>> 결과화면


color 값이 변했다!!!!!!!!!!!!!!!!!!!!!

신나2