JSON을 Scala 케이스 클래스로 변환 — Numio
JSON 샘플을 Scala case class로 변환합니다. 중첩 객체는 별도 case class, 배열은 Seq[...]가 되고, null 값과 배열의 일부 항목에만 있는 키는 Option[...]이 됩니다.
Circe, Play JSON, uPickle 코덱을 추가하기 전에 JSON API 모델 초안을 만듭니다.
JSON
Scala Case Class
이럴 때 사용하세요
- Circe, Play JSON, uPickle 코덱을 추가하기 전에 JSON API 모델 초안을 만듭니다.
- Kafka나 HTTP 샘플 페이로드를 Spark 또는 Akka 작업용 case class로 만듭니다.
사용 방법
- JSON 객체를 붙여 넣습니다. 선택적 필드가 있다면 키가 서로 다른 배열 항목을 여러 개 포함하세요.
- 출력을 확인합니다. 루트 클래스는 RootInterface이고 중첩 클래스는 키 이름의 PascalCase로 지어집니다(speakers는 Speakers가 됨).
- 클래스를 복사해 이름을 바꾸고, 샘플로 타입을 정할 수 없었던 Option[Any]나 Seq[Any]를 구체적인 타입으로 좁히세요.
JSON 입력
{
"id": 7,
"type": "conference",
"price": 49.9,
"venue": null,
"tags": ["jvm", "fp"],
"speakers": [
{ "name": "Martin", "talk": "Keynote" },
{ "name": "Li", "talk": "Effects", "slides": "https://example.com/s.pdf" }
]
}Scala case class
case class RootInterface( id: Int, `type`: String, price: Double, venue: Option[Any], tags: Seq[String], speakers: Seq[Speakers] ) case class Speakers( name: String, talk: String, slides: Option[String] )
세부 정보 및 제한 사항
사이트 자체 생성기로 브라우저에서 실행되며 서버를 호출하지 않습니다. 설정이 없고 import나 코덱 derive도 추가하지 않습니다.
배열의 모든 항목이 병합됩니다. 일부 항목에서 빠졌거나 null인 키는 Option[...]이 되고, 12와 1.5가 함께 있으면 Double이 됩니다.
항상 null인 값은 Option[Any], 빈 배열은 Seq[Any]가 됩니다. 샘플에 보여 줄 타입이 없기 때문입니다.
예약어와 식별자가 될 수 없는 키는 `type`처럼 백틱으로 감쌉니다. snake_case 키는 그대로 유지됩니다.
FAQ
nullable 필드에 Option이 생성되나요?
예. 값이 null인 키는 Option[...]이 됩니다. 같은 키에 실제 값이 있는 다른 샘플이 있으면 그 타입을, 없으면 Option[Any]를 씁니다. 배열의 일부 항목에만 있는 키도 Option입니다.
루트가 JSON 배열이면 어떻게 되나요?
항목이 하나의 RootInterface case class로 병합되고, 일부 항목에만 있는 키는 Option이 되며, type RootInterfaceList = Seq[RootInterface]가 추가됩니다.
64비트 ID는 Long이 되나요?
샘플 값이 Int 범위(약 ±21억)를 벗어날 때만 그렇습니다. 그 밖의 정수는 Int가 되므로 커질 수 있는 ID나 타임스탬프는 Long으로 바꾸세요.