개인정보처리방침이 2026년 9월 20일부터 변경됩니다. 온라인 맞춤형 광고 도입에 따라 행태정보 수집·이용 및 국외 이전 관련 조항이 추가됩니다.
개정 내용 보기

필드 변환 7종

toNumber·toString·toBoolean·dateFormat·valueMap·defaultValue·template의 실제 동작과 주의점.

매핑한 값을 그대로 쓰지 않고 형태를 바꿔야 할 때가 있습니다. 공공 API는 숫자를 문자열로 주는 경우가 흔하고, 코드값을 사람이 읽을 말로 바꿔야 하는 일도 많습니다.

{
    "source": "pm10Value",
    "output": "pm10",
    "transforms": [{ "type": "toNumber" }]
}

transforms는 배열이라 여러 개를 순서대로 적용할 수 있습니다. 앞 변환의 출력이 뒤 변환의 입력이 됩니다.

일곱 가지

toNumber

숫자로 바꿉니다. 바꿀 수 없으면 원본 값을 그대로 둡니다.

입력 출력
"25" 25
"abc" "abc" (변환 실패 → 원본 유지)
"" 0
null 0
true 1

NaN이 결과로 나가는 일은 없습니다. 대신 숫자가 될 거라 기대한 자리에 문자열이 남을 수 있으므로, 계산에 쓰기 전에 값을 확인하는 편이 안전합니다. 공공 API가 결측치를 "-""통신장애"로 표기하는 경우가 실제로 흔합니다.

toString

문자열로 바꿉니다. nullundefined는 빈 문자열이 됩니다"null"이 아닙니다.

입력 출력
0 "0"
false "false"
null ""
[1, 2] "1,2"
{ a: 1 } "[object Object]"

객체에 쓰면 쓸모없는 문자열이 나오므로, 중첩 값은 매핑 경로로 먼저 꺼내세요.

toBoolean

참·거짓으로 바꿉니다. 자바스크립트의 truthy 규칙을 그대로 따르므로 직관과 어긋나는 경우가 있습니다.

입력 출력
"true" true
"false" true
"0" true
"" false
0 false
null false

문자열 "false""0"이 모두 true가 됩니다. 비어 있지 않은 문자열은 전부 참이기 때문입니다. "Y"/"N"이나 "1"/"0"으로 오는 값을 다룰 때는 toBoolean 대신 valueMap을 쓰세요.

valueMap

값을 표로 치환합니다. 표에 없는 값은 그대로 통과합니다.

{
    "type": "valueMap",
    "map": { "1": "좋음", "2": "보통", "3": "나쁨", "4": "매우나쁨" }
}

키는 문자열로 맞춰 찾으므로 원본이 숫자 1이든 문자열 "1"이든 "좋음"이 됩니다.

"Y"/"N" 같은 값을 다룰 때 유용합니다.

{ "type": "valueMap", "map": { "Y": "사용", "N": "미사용" } }

defaultValue

값이 비었을 때 대신 넣습니다.

{ "type": "defaultValue", "value": 0 }

nullundefined만 치환합니다. "", 0, false는 값이 있는 것으로 보고 그대로 둡니다. 빈 문자열을 기본값으로 바꾸고 싶다면 이 변환으로는 되지 않습니다.

원본에 없는 필드를 매핑했을 때 키가 사라지는 것을 막는 용도로 자주 씁니다.

{
    "source": "optionalField",
    "output": "value",
    "transforms": [{ "type": "defaultValue", "value": null }]
}

template

값을 문자열 안에 끼워 넣습니다.

{ "type": "template", "template": "${value}㎍/㎥" }

45"45㎍/㎥"

치환되는 것은 ${value} 하나뿐입니다. 다른 필드를 참조할 수 없고, ${other}라고 써도 그대로 남습니다. 여러 번 쓰면 모두 치환됩니다.

{ "type": "template", "template": "${value}년 ${value}월" }

결과는 항상 문자열이므로 이후에 toNumber를 붙이면 대개 원래 값으로 돌아오지 못합니다. 순서에 주의하세요.

dateFormat

현재 이 변환은 format을 적용하지 않습니다. 값을 문자열로 바꾸기만 하며, YYYY-MM-DD 같은 패턴을 넣어도 무시됩니다. 동작은 toString과 같습니다.

날짜 형식을 바꿔야 한다면 지금은 애플리케이션 쪽에서 처리하세요.

const date = new Date(item.measuredAt);
const label = date.toLocaleDateString('ko-KR');

여러 변환 이어 붙이기

배열 순서대로 적용됩니다.

{
    "source": "pm10Value",
    "output": "pm10",
    "transforms": [
        { "type": "defaultValue", "value": "0" },
        { "type": "toNumber" }
    ]
}

값이 없으면 "0"으로 채운 뒤 숫자 0으로 바꿉니다. 순서를 뒤집으면 toNumber가 먼저 undefined를 만나 그대로 두므로 기본값이 적용되지 않습니다.

읽기 좋은 표시용 문자열을 만들 때도 순서가 중요합니다.

{
    "transforms": [
        { "type": "toNumber" },
        { "type": "template", "template": "${value}㎍/㎥" }
    ]
}

"045"45"45㎍/㎥". toNumber를 먼저 두어 앞의 0을 떨어뜨렸습니다.

콘솔에서 고를 수 있는 것

에디터의 드롭다운에는 toNumber·toString·toBoolean 세 가지만 나옵니다. 나머지 네 가지는 규칙 JSON을 직접 편집해야 설정할 수 있습니다.

규칙 전체 구조는 가공 규칙 이해하기에 있습니다.