Λ Takuya71 の日記 Λ

ここに記載の内容は個人的な見解で 勤務先、所属先には関連はございません。最近は scala に はまってます。認定スクラムマスター

JSON4S が (3.2.2) 3.2.3 になっているので 日本語訳も更新

json4s の readme が更新されていたので 日本語訳も更新しました。

今回は 3.1.0 から 3.2.2 3.2.3への更新となってます。

Serializing classes defined in traits or classes が今回追加されています。

ちょっと この部分の訳を 日本語私訳に追加したのですが、よくわからない単語があってこの部分は間違っているかも知れません。
ご指摘あれば お教えください。

場所としては

We could punt on those but that brings us to the next problem…

という文章があるのですが、
この punt って単語初めてみた単語だし、どう訳せばいいのかわからん。 「パントする」のような なんか棒を振るようなイメージのようだが よくわからん
put の typo かとか思ったり。。

追加された機能自体は trait で定義されている case class を使えるようになるってもので 面白そうである。

trait に 複数の case class がある場合はこんな風に 使えばいいのだろうか?

trait SharedModule {
  case class SharedObj(name: String, visible: Boolean = false)
  case class SharedObj2(name: String, age: Int, address: String)
}

object PingPongGame extends SharedModule

implicit val formats: Formats = DefaultFormats.withCompanions(classOf[PingPongGame.SharedObj] -> PingPongGame, classOf[PingPongGame.SharedObj2] -> PingPongGame)

val inst1 = PingPongGame.SharedObj2("takuya",42,"Japan")
val extr1 = Extraction.decompose(inst1)

// extr1: org.json4s.package.JValue = JObject(List( (name,JString(takuya) ), (age,JInt(42)), (address,JString(Japan))))

val inst2 = PingPongGame.SharedObj("jeff",visible = true)
val extr2 = Extraction.decompose(inst2)

//extr2: org.json4s.package.JValue = JObject(List( (name,JString(jeff) ), (visible,JBool(true))))

一応出来ているっぽいが。。

README のおかしいと思うところ

Others の

リンクもおかしいような
ここだけ 3.2.2 ではなく 3.2.0 になっているし、
しかも このリンク先もないし

の間違いじゃないのとか思ったりしてる。

github の コメントが prepare になっているから しばらく変化なければ issue 出してみようかな