[SCALA] 케이스 클래스는 하나 개의 필드가있는 경우 경우 클래스에 JSON을 설정하는 방법
SCALA케이스 클래스는 하나 개의 필드가있는 경우 경우 클래스에 JSON을 설정하는 방법
놀이에서 2.1 객체에 마샬 JSON으로 사용된다 읽습니다. 그러나 경우 클래스는 하나의 필드가 때이 작업을 수행하는 방법에 대해 설명합니다. 더 필드에 작동하는 ideom은 하나 개의 필드 '와'이 사용되지 않는 것과 같이,하지 작업을 수행합니다. 따라서 나는 FunctionBuilder을하지 않습니다.
다음 코드는 나에게 형식이 일치를 제공합니다. 나는이 문제를 어떻게 해결할 수 있습니까?
case class Data(stamm: Seq[String])
implicit val dataReads = (
(__ \ "stamm").read(Reads.list[String])
)(Data)
해결법
-
==============================
1.JSON 콤비는 하나의 필드의 경우 클래스 작동하지 않습니다.
JSON 콤비는 하나의 필드의 경우 클래스 작동하지 않습니다.
파스칼 (이 API의 작가) 여기에 이러한 상황을 설명했다 https://groups.google.com/forum/?fromgroups=#!starred/play-framework/hGrveOkbJ6U
이와 같은 작품 몇 가지 해결 방법이 있습니다 :
case class A(value: List[Int]) val areads = (__ \ 'value).read[List[Int]].map{ l => A(l) } // covariant map
-
==============================
2.줄리앙 대답, 당신이 사용하는 하나의 필드 케이스 클래스를 읽을 수 있습니다 :
줄리앙 대답, 당신이 사용하는 하나의 필드 케이스 클래스를 읽을 수 있습니다 :
case class Person(name: String) val personReads: Reads[Person] = (__ \ "name").read[String].map { name => Person(name) }
그냥 보완, 당신이 쓰고 싶은 경우 :
val personWrites: Writes[Person] = (__ \ "name").write[String].contramap { (person: Person) => person.name }
또는 형식 (읽기 및 쓰기)
val personFormat: Format[Person] = (__ \ "name").format[String].inmap(name => Person(name), (person: Person) => person.name)
쓰기와 형식이를 가져올 수있다 :
import play.api.libs.functional.syntax._
-
==============================
3.@의 yokomizor의 답변에 따라, 나는이 될 수있는 포맷터를 만들 수있는 간단한 방법을 발견
@의 yokomizor의 답변에 따라, 나는이 될 수있는 포맷터를 만들 수있는 간단한 방법을 발견
case class Person(name: String) val personFormatter: Format[Person] = (__ \ "full_name").format[String].inmap(Person.apply, unlift(Person.unapply))
-
==============================
4.허용 된 것보다 더 간단한 솔루션 :
허용 된 것보다 더 간단한 솔루션 :
case class A(value: String) val reads = (__ \ "key").read[String].map(A.apply)
from https://stackoverflow.com/questions/14754092/how-to-turn-json-to-case-class-when-case-class-has-only-one-field by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 플레이 2 JSON 형식으로 누락 된 속성에 대한 기본값 (0) | 2019.11.06 |
---|---|
[SCALA] 스칼라 지원 꼬리 재귀 최적화합니까? (0) | 2019.11.06 |
[SCALA] 스칼라의 '::'연산자, 어떻게 작동합니까? (0) | 2019.11.06 |
[SCALA] 동적 특성에 혼합 (0) | 2019.11.06 |
[SCALA] 어떻게 자기 형을 구현하는 등 스칼라의이 입력, 추상적 인 유형을 사용 하는가? (0) | 2019.11.06 |